<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.5"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>SWM34S_LVGL7.11_SWMUI: C:/Users/DELL/Desktop/Commit/lvgl/SWM34S_LVGL7.11_SWMUI_20230515/APP/UI/ui_update.c 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">SWM34S_LVGL7.11_SWMUI<span id="projectnumber">&#160;V7.9</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.5 -->
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_0ca16891106f5a3e9ad635a0d6c5f98f.html">APP</a></li><li class="navelem"><a class="el" href="dir_c78dc1806c68fd338fba226975244931.html">UI</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle"><div class="title">ui_update.c</div></div>
</div><!--header-->
<div class="contents">
<a href="ui__update_8c.html">浏览该文件的文档.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span> </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span><span class="preprocessor">#include &quot;lvgl.h&quot;</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span><span class="preprocessor">#include &quot;<a class="code" href="bsp__init_8h.html">bsp_init.h</a>&quot;</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span><span class="preprocessor">#include &quot;<a class="code" href="load__file_8h.html">load_file.h</a>&quot;</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno">   65</span><span class="preprocessor">#include &quot;<a class="code" href="file__table_8h.html">file_table.h</a>&quot;</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span><span class="preprocessor">#include &quot;<a class="code" href="userboot_8h.html">userboot.h</a>&quot;</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span><span class="preprocessor">#include &quot;<a class="code" href="_mass_storage_8h.html">MassStorage.h</a>&quot;</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span> </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span><span class="preprocessor">#include &quot;<a class="code" href="ui__update_8h.html">ui_update.h</a>&quot;</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span> </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span><span class="preprocessor">#include &quot;<a class="code" href="log_8h.html">log.h</a>&quot;</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span><span class="preprocessor">#include &quot;<a class="code" href="version_8h.html">version.h</a>&quot;</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span> </div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span><span class="comment">/*******************************************************************************************************************************************</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span><span class="comment"> * Private Define</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span><span class="comment"> *******************************************************************************************************************************************/</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"><a class="line" href="ui__update_8c.html#ac8db10abeaa1b0ad371233c7f0d89507">   77</a></span><span class="preprocessor">#define UD_DEBUG_ENABLE  </span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span><span class="preprocessor">#ifdef UD_DEBUG_ENABLE</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a4dd0246f2fafec4239a6404f01a15f47">   81</a></span><span class="preprocessor">    #define UD_LOG(...)         LOG_INFO(__VA_ARGS__) </span><span class="comment">// printf(__VA_ARGS__)</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span><span class="preprocessor">    #define UD_LOG(...)</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span> </div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span><span class="preprocessor">#if (LV_HOR_RES_MAX == 480 &amp;&amp; LV_VER_RES_MAX == 272)</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span><span class="preprocessor">    #define LV_FONT_AUTO_SIZE       lv_font_montserrat_12</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span><span class="preprocessor">#elif (LV_HOR_RES_MAX == 480 &amp;&amp; LV_VER_RES_MAX == 480)</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span><span class="preprocessor">    #define LV_FONT_AUTO_SIZE       lv_font_montserrat_14</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span><span class="preprocessor">#elif (LV_HOR_RES_MAX == 800 &amp;&amp; LV_VER_RES_MAX == 480)</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span><span class="preprocessor">    #define LV_FONT_AUTO_SIZE       lv_font_montserrat_14</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span><span class="preprocessor">#elif (LV_HOR_RES_MAX == 1024 &amp;&amp; LV_VER_RES_MAX == 600)</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span><span class="preprocessor">    #define LV_FONT_AUTO_SIZE       lv_font_montserrat_16</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"><a class="line" href="ui__update_8c.html#aff351d118cacf27e50b7172b5fe7cc6d">   96</a></span><span class="preprocessor">    #define LV_FONT_AUTO_SIZE       lv_font_montserrat_14</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno">   97</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">   98</span> </div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span><span class="comment">/*******************************************************************************************************************************************</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">  100</span><span class="comment"> * Private Typedef</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">  101</span><span class="comment"> *******************************************************************************************************************************************/</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61">  103</a></span><span class="keyword">typedef</span> <span class="keyword">enum</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno">  104</span>{</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">  105</a></span>    <a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a> = 0,</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">  106</a></span>    <a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>,</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  107</span>    <a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61aa7dadc373d1293a6252806d1c1219d6a">_LIST_MAX_</a></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61aa7dadc373d1293a6252806d1c1219d6a">  108</a></span>} <a class="code hl_enumeration" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61">list_t</a>;</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span> </div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"><a class="line" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2">  111</a></span><span class="keyword">typedef</span> <span class="keyword">enum</span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  112</span>{</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"><a class="line" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a438765e1f3129ec9a15a3750f85ba17c">  113</a></span>    <a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a438765e1f3129ec9a15a3750f85ba17c">WAY_SD</a> = 0,</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"><a class="line" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a7da97547825333c89d5835511c00e334">  114</a></span>    <a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a7da97547825333c89d5835511c00e334">WAY_USB_H</a>,</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"><a class="line" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a94ed3d890336aa209cd2e7e9fa2ace11">  115</a></span>    <a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a94ed3d890336aa209cd2e7e9fa2ace11">WAY_USB_D</a>,</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno">  116</span>    <a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2ae4c3097bd87be672f365e2e5802667ac">_WAY_MAX_</a></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"><a class="line" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2ae4c3097bd87be672f365e2e5802667ac">  117</a></span>} <a class="code hl_enumeration" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2">way_t</a>;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno">  118</span> </div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0">  120</a></span><span class="keyword">typedef</span> <span class="keyword">enum</span></div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">  121</span>{</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0ad892aae0696cbd7fbe95386c8e74d5fb">  122</a></span>    <a class="code hl_enumvalue" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0ad892aae0696cbd7fbe95386c8e74d5fb">BTN_LIST</a> = 0,</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0a389a5271294f16b165df84d82777da64">  123</a></span>    <a class="code hl_enumvalue" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0a389a5271294f16b165df84d82777da64">BTN_ALL</a>,</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0a1ca55de3fb737acafbed5b694df304d9">  124</a></span>    <a class="code hl_enumvalue" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0a1ca55de3fb737acafbed5b694df304d9">BTN_DFU</a>,</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno">  125</span>    <a class="code hl_enumvalue" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0a5a286a5118e9f16961d315021d46d3b3">_BTN_MAX_</a></div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0a5a286a5118e9f16961d315021d46d3b3">  126</a></span>} <a class="code hl_enumeration" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0">btn_jump_t</a>;</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno">  127</span> </div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno">  129</span><span class="keyword">typedef</span> <span class="keyword">struct</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno">  130</span>{</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"><a class="line" href="structlv__ui.html#aab0990bea6532e3c3d13fdf497ac6a7d">  131</a></span>    lv_obj_t *<a class="code hl_variable" href="structlv__ui.html#aab0990bea6532e3c3d13fdf497ac6a7d">obj_bg</a>;</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno">  132</span> </div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"><a class="line" href="structlv__ui.html#a797f71be78f3620e700c217a7b569bfc">  133</a></span>    lv_obj_t *<a class="code hl_variable" href="structlv__ui.html#a797f71be78f3620e700c217a7b569bfc">cont_left</a>;</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno">  134</span> </div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"><a class="line" href="structlv__ui.html#a6bc13c5836684fe7a05318caa6b9faa9">  135</a></span>    lv_obj_t *<a class="code hl_variable" href="structlv__ui.html#a6bc13c5836684fe7a05318caa6b9faa9">dp</a>;</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"><a class="line" href="structlv__ui.html#ad6ed790d22701e3f18bc9e56076d37be">  136</a></span>    lv_obj_t *<a class="code hl_variable" href="structlv__ui.html#ad6ed790d22701e3f18bc9e56076d37be">label_notes</a>;</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"><a class="line" href="structlv__ui.html#a3724878ba8252fb12748f13ac00db976">  137</a></span>    lv_obj_t *btn[<a class="code hl_enumvalue" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0a5a286a5118e9f16961d315021d46d3b3">_BTN_MAX_</a>];</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"><a class="line" href="structlv__ui.html#a92fa52d98216f7072c6b45c036d23005">  138</a></span>    lv_obj_t *btn_label[<a class="code hl_enumvalue" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0a5a286a5118e9f16961d315021d46d3b3">_BTN_MAX_</a>];</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno">  139</span> </div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"><a class="line" href="structlv__ui.html#a575ff5085e47401c37a8fdead5c28cb2">  140</a></span>    lv_obj_t *<a class="code hl_variable" href="structlv__ui.html#a575ff5085e47401c37a8fdead5c28cb2">cont_right</a>;</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno">  141</span> </div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"><a class="line" href="structlv__ui.html#ad49d333ebae7be69944502905f66f241">  142</a></span>    lv_obj_t *cont_list[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61aa7dadc373d1293a6252806d1c1219d6a">_LIST_MAX_</a>];</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno">  143</span> </div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"><a class="line" href="structlv__ui.html#a63436e3c484508c05333317adfd3bdcb">  144</a></span>    lv_obj_t *list[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61aa7dadc373d1293a6252806d1c1219d6a">_LIST_MAX_</a>];</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"><a class="line" href="structlv__ui.html#acc037b4a511f3f67178aac07b1f0200a">  145</a></span>    lv_obj_t *list_label[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61aa7dadc373d1293a6252806d1c1219d6a">_LIST_MAX_</a>];</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"><a class="line" href="structlv__ui.html#aa3cd6e3ccdf1a0a2bce3e70fd56088d8">  146</a></span>    lv_obj_t *list_btn_next[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61aa7dadc373d1293a6252806d1c1219d6a">_LIST_MAX_</a>];</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno">  147</span>} <a class="code hl_struct" href="structlv__ui.html">lv_ui</a>;</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno">  148</span> </div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a81fe2f73bce795df8ef1757fc170902a">  152</a></span><span class="keyword">typedef</span> uint8_t (*<a class="code hl_typedef" href="ui__update_8c.html#a81fe2f73bce795df8ef1757fc170902a">msgbox_sync_cb</a>)(void);</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno">  153</span> </div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"><a class="line" href="structlist__dp__t.html">  155</a></span><span class="keyword">typedef</span> <span class="keyword">struct</span></div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno">  156</span>{</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"><a class="line" href="structlist__dp__t.html#ab790c3badafe8a936877b3f795a12d99">  157</a></span>    <span class="keywordtype">char</span> path[FF_MAX_LFN]; </div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"><a class="line" href="structlist__dp__t.html#affcceda12b139f26819f4929be705eb1">  158</a></span>    <a class="code hl_enumeration" href="load__file_8h.html#a44edb5dd69763758dda6af4dd162c997">disk_t</a> <a class="code hl_variable" href="structlist__dp__t.html#affcceda12b139f26819f4929be705eb1">disk</a>;           </div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"><a class="line" href="structlist__dp__t.html#aa59fe1cb43760885aa78301453764fe0">  159</a></span>    DIR <a class="code hl_variable" href="structlist__dp__t.html#aa59fe1cb43760885aa78301453764fe0">dir</a>;               </div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"><a class="line" href="structlist__dp__t.html#adb2adf9b3f315041beb78852fa37a984">  160</a></span>    FILINFO <a class="code hl_variable" href="structlist__dp__t.html#adb2adf9b3f315041beb78852fa37a984">fno</a>;           </div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno">  161</span>} <a class="code hl_struct" href="structlist__dp__t.html">list_dp_t</a>;</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno">  162</span> </div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno">  163</span><span class="comment">/*******************************************************************************************************************************************</span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno">  164</span><span class="comment"> * Private Constant</span></div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno">  165</span><span class="comment"> *******************************************************************************************************************************************/</span></div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a8146347161af60be85eba1ea595d94b4">  166</a></span><span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> <a class="code hl_variable" href="ui__update_8c.html#a8146347161af60be85eba1ea595d94b4">Dir_Ch</a> = <span class="charliteral">&#39;/&#39;</span>;             </div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a0f600edde0d29f18851c4f5de5a9fc3d">  167</a></span><span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> <a class="code hl_variable" href="ui__update_8c.html#a0f600edde0d29f18851c4f5de5a9fc3d">Dot_Ch</a> = <span class="charliteral">&#39;.&#39;</span>;             </div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"><a class="line" href="ui__update_8c.html#abd8caa3698afa6b173633a32e0d36ec4">  168</a></span><span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<span class="keyword">const</span> <a class="code hl_variable" href="ui__update_8c.html#abd8caa3698afa6b173633a32e0d36ec4">Back_Str</a> = <span class="stringliteral">&quot;...&quot;</span>;  </div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a58399acf1b4e32d79c4971de38e1dc42">  171</a></span><span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<span class="keyword">const</span> <a class="code hl_variable" href="ui__update_8c.html#a58399acf1b4e32d79c4971de38e1dc42">Guidance_Notes</a> = <span class="stringliteral">&quot;File Manager&quot;</span>;</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno">  172</span> </div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a6b9762fb44e1c11b05dd4384e004ee16">  174</a></span><span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<span class="keyword">const</span> <a class="code hl_variable" href="ui__update_8c.html#a6b9762fb44e1c11b05dd4384e004ee16">Way_Text</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2ae4c3097bd87be672f365e2e5802667ac">_WAY_MAX_</a>] = {</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno">  175</span>    <span class="stringliteral">&quot;SD&quot;</span>,</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno">  176</span>    <span class="stringliteral">&quot;USB_H&quot;</span>,</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno">  177</span>    <span class="stringliteral">&quot;USB_PC&quot;</span></div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno">  178</span>};</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno">  179</span> </div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a4ffa04991f0097ff752c1938c60dc6f0">  181</a></span><span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<span class="keyword">const</span> <a class="code hl_variable" href="ui__update_8c.html#a4ffa04991f0097ff752c1938c60dc6f0">Btn_Text</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0a5a286a5118e9f16961d315021d46d3b3">_BTN_MAX_</a>] = {</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno">  182</span>    <span class="stringliteral">&quot;List&quot;</span>,</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno">  183</span>    <span class="stringliteral">&quot;ALL&quot;</span>,</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno">  184</span>    <span class="stringliteral">&quot;DFU&quot;</span></div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno">  185</span>};</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno">  186</span> </div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a5af441434574979c5408785942ab0ea8">  188</a></span><span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code hl_variable" href="ui__update_8c.html#a5af441434574979c5408785942ab0ea8">List_File_Max_Num</a> = 10;</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno">  189</span> </div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a06264759c9982089ba92c1d631969196">  191</a></span><span class="keyword">static</span> <span class="keyword">const</span> uint32_t <a class="code hl_variable" href="ui__update_8c.html#a06264759c9982089ba92c1d631969196">MsgBox_Wait_Ms</a> = 6666;</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno">  192</span> </div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno">  193</span><span class="comment">/*******************************************************************************************************************************************</span></div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno">  194</span><span class="comment"> * Private Variable</span></div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno">  195</span><span class="comment"> *******************************************************************************************************************************************/</span></div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"><a class="line" href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">  197</a></span><span class="keyword">static</span> <a class="code hl_struct" href="structlv__ui.html">lv_ui</a> <a class="code hl_variable" href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">UI</a>;</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno">  198</span> </div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a527b235543e81472134d70bf86683ec7">  200</a></span><span class="keyword">static</span> lv_ll_t <a class="code hl_variable" href="ui__update_8c.html#a527b235543e81472134d70bf86683ec7">LL_File</a>;</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno">  201</span> </div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"><a class="line" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">  203</a></span><span class="keyword">static</span> <a class="code hl_struct" href="structlist__dp__t.html">list_dp_t</a> <a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61aa7dadc373d1293a6252806d1c1219d6a">_LIST_MAX_</a>] = {</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno">  204</span>    {.<a class="code hl_variable" href="structlist__dp__t.html#affcceda12b139f26819f4929be705eb1">disk</a> = (<a class="code hl_define" href="version_8h.html#a737744852bdd23458f08a934778043a9">SWM34S_LCM_PCBV</a> == <a class="code hl_define" href="version_8h.html#a190e24ed4405f51a3099593ea97afb23">SWM34SCE_PIN48_A2</a>) ? <a class="code hl_enumvalue" href="load__file_8h.html#a44edb5dd69763758dda6af4dd162c997a65f6b55fdc64778bf10632a795b97761">USB</a> : <a class="code hl_enumvalue" href="load__file_8h.html#a44edb5dd69763758dda6af4dd162c997a8268cafd51299d814aba050e5f54f1ac">SD</a>},</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno">  205</span>    {.disk = <a class="code hl_enumvalue" href="load__file_8h.html#a44edb5dd69763758dda6af4dd162c997aefea9eb0772378037221a3f1fe759a76">SPI</a>}</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno">  206</span>};</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno">  207</span> </div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"><a class="line" href="ui__update_8c.html#af3e1747368f8a109619463c937c3f597">  209</a></span><span class="keyword">static</span> <a class="code hl_enumeration" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2">way_t</a> <a class="code hl_variable" href="ui__update_8c.html#af3e1747368f8a109619463c937c3f597">Select_Way</a> = (<a class="code hl_define" href="version_8h.html#a737744852bdd23458f08a934778043a9">SWM34S_LCM_PCBV</a> == <a class="code hl_define" href="version_8h.html#a190e24ed4405f51a3099593ea97afb23">SWM34SCE_PIN48_A2</a>) ? <a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a7da97547825333c89d5835511c00e334">WAY_USB_H</a> : <a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a438765e1f3129ec9a15a3750f85ba17c">WAY_SD</a>;</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno">  210</span> </div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno">  212</span><span class="keyword">static</span> <span class="keyword">enum</span> {</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"><a class="line" href="ui__update_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a79935518a3889663d8688b6b01fff051">  213</a></span>    <a class="code hl_enumvalue" href="ui__update_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a79935518a3889663d8688b6b01fff051">Default</a> = 0,</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"><a class="line" href="ui__update_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a8c6655c7178615ef6ad9485727021ee1">  214</a></span>    <a class="code hl_enumvalue" href="ui__update_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a8c6655c7178615ef6ad9485727021ee1">Option_OK</a>,</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno">  215</span>    <a class="code hl_enumvalue" href="ui__update_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a342bdb40ae73f9a7b19c646abfcce891">Option_Cancel</a></div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a6e87ff056d14d5037f88d7299434bffb">  216</a></span>} <a class="code hl_variable" href="ui__update_8c.html#a6e87ff056d14d5037f88d7299434bffb">Boot_Select</a> = <a class="code hl_enumvalue" href="ui__update_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a79935518a3889663d8688b6b01fff051">Default</a>;</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno">  217</span> </div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a50ade5308cd9daf421ac0c8a6f6c1f82">  225</a></span><span class="keyword">static</span> <span class="keyword">volatile</span> <a class="code hl_enumeration" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0">btn_jump_t</a> <a class="code hl_variable" href="ui__update_8c.html#a50ade5308cd9daf421ac0c8a6f6c1f82">File_Explorer_Flag</a> = <a class="code hl_enumvalue" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0a5a286a5118e9f16961d315021d46d3b3">_BTN_MAX_</a>;</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno">  226</span> </div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno">  227</span><span class="comment">/*******************************************************************************************************************************************</span></div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno">  228</span><span class="comment"> * Private Prototype</span></div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno">  229</span><span class="comment"> *******************************************************************************************************************************************/</span></div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno">  230</span><span class="keyword">static</span> uint8_t <a class="code hl_function" href="ui__update_8c.html#a4b62aef18e10709cce125faee1b7dd52">file_explorer</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno">  231</span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="ui__update_8c.html#a1a09f4ed59173b0220ba241a673ea3ec">boot_select_mbox_cb</a>(lv_obj_t *obj, lv_event_t event);</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno">  232</span><span class="keyword">static</span> FRESULT <a class="code hl_function" href="ui__update_8c.html#affa34b514b9ff8d1f0d4e1f92df3f221">scan_dir_files</a>(<a class="code hl_struct" href="structlist__dp__t.html">list_dp_t</a> *list_data, uint16_t file_num, uint8_t (*file_filter)(<span class="keyword">const</span> <span class="keywordtype">char</span> *),</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno">  233</span>                              lv_obj_t *list, lv_event_cb_t btn_event_cb);</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno">  234</span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="ui__update_8c.html#ac4bb8b84a1ae2abc7bd0419c4345bca2">dp_select_way_cb</a>(<a class="code hl_enumeration" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2">way_t</a> *way);</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno">  235</span><span class="keyword">static</span> uint32_t <a class="code hl_function" href="ui__update_8c.html#a3dbd73c82f05a5370635333b5ed68aea">btn_click_cb</a>(<a class="code hl_enumeration" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0">btn_jump_t</a> btn_flag);</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno">  236</span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="ui__update_8c.html#abed58d04a30c85fb2231dace9f928c23">list_btn_event_handler</a>(lv_obj_t *obj, lv_event_t event);</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno">  237</span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="ui__update_8c.html#a106a57df6249072c630361740348469e">clean_scr_page</a>(<a class="code hl_struct" href="structlv__ui.html">lv_ui</a> *ui);</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno">  238</span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="ui__update_8c.html#a0914c8a5cdee556dcabd181982c81260">setup_scr_page</a>(<a class="code hl_struct" href="structlv__ui.html">lv_ui</a> *ui);</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno">  239</span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="ui__update_8c.html#af7291cda4b568af469eecf3fbf3a7094">msgbox_show</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *msg_text, <span class="keyword">const</span> <span class="keywordtype">char</span> **btn_text,</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno">  240</span>                        <span class="keyword">const</span> uint32_t wait_ms, <a class="code hl_typedef" href="ui__update_8c.html#a81fe2f73bce795df8ef1757fc170902a">msgbox_sync_cb</a> user_cb);</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"><a class="line" href="ui__update_8c.html#aa4a4950571bee2848a2e95de6c8ec03c">  241</a></span><span class="keyword">static</span> uint8_t <a class="code hl_function" href="ui__update_8c.html#aa4a4950571bee2848a2e95de6c8ec03c">msgbox_recv_btn</a>(uint16_t *<span class="keywordtype">id</span>);</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno">  242</span> </div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a69a8fdfac59efe32394ac287d886ad88">  250</a></span><span class="keyword">static</span> uint8_t <a class="code hl_function" href="ui__update_8c.html#a69a8fdfac59efe32394ac287d886ad88">file_filter_move</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *path)</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno">  251</span>{</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno">  252</span>    <span class="comment">//开机视频 &amp; 开机动画 &amp; 主菜单中 产品应用子菜单下 的 全屏测试图 &amp; UserBoot 固件</span></div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno">  253</span>    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *filter_list[1 + 10 + 10 + 2];</div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno">  254</span>    <span class="keyword">static</span> uint8_t init_filter_list = 1;</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno">  255</span>    <span class="keywordflow">if</span> (init_filter_list != 0) <span class="comment">//仅初始化一次</span></div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno">  256</span>    {</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno">  257</span>        uint32_t i = 0;</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno">  258</span>        <span class="keywordflow">for</span> (i = 0; i &lt; 10; ++i)</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno">  259</span>            filter_list[i] = <a class="code hl_variable" href="file__table_8c.html#a210f9e081ee07b322afeec966766b06a">File_Table</a>.<a class="code hl_variable" href="structtable__class__t.html#a5be3dd4ebfa388f80036fee2ac2768f1">file</a>[<a class="code hl_define" href="file__table_8h.html#a53bd581d915222e8bcbd0f453dcc60ef">FT_IMG_START</a> + i].<a class="code hl_variable" href="structuser__file__t.html#a8f8f80d37794cde9472343e4487ba3eb">name</a>;</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno">  260</span>        for (i = 10; i &lt; 20; ++i)</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno">  261</span>            filter_list[i] = <a class="code hl_variable" href="file__table_8c.html#a210f9e081ee07b322afeec966766b06a">File_Table</a>.<a class="code hl_variable" href="structtable__class__t.html#a5be3dd4ebfa388f80036fee2ac2768f1">file</a>[<a class="code hl_define" href="file__table_8h.html#a53bd581d915222e8bcbd0f453dcc60ef">FT_IMG_START</a> + 20 + i].<a class="code hl_variable" href="structuser__file__t.html#a8f8f80d37794cde9472343e4487ba3eb">name</a>;</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno">  262</span> </div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno">  263</span>        filter_list[i++] = <a class="code hl_variable" href="file__table_8c.html#a210f9e081ee07b322afeec966766b06a">File_Table</a>.<a class="code hl_variable" href="structtable__class__t.html#a5be3dd4ebfa388f80036fee2ac2768f1">file</a>[<a class="code hl_define" href="file__table_8h.html#a1050bc568c1b6f276b9280fa238912e4">FT_SPI_VIDEO</a>].<a class="code hl_variable" href="structuser__file__t.html#a8f8f80d37794cde9472343e4487ba3eb">name</a>;</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno">  264</span>        filter_list[i++] = <a class="code hl_variable" href="userboot_8c.html#a24048df1d0e7c6baee931ac9501003b6">Firmware_Name_Update</a>; <span class="comment">//&quot;Firmware_SWM34S_Admin.bin&quot;</span></div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno">  265</span>        filter_list[i++] = <a class="code hl_variable" href="userboot_8c.html#a538e1fe7d9d421fde968ca66d523f230">Firmware_Name_Backup</a>; <span class="comment">//&quot;Firmware_SWM34S_Backups.bin&quot;</span></div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno">  266</span>        init_filter_list = 0;</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno">  267</span>    }</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno">  268</span> </div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno">  269</span>    <span class="comment">//过滤策略:文件名是否相同</span></div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno">  270</span>    <span class="keywordflow">for</span> (uint32_t i = 0; i &lt; <span class="keyword">sizeof</span>(filter_list) / <span class="keyword">sizeof</span>(filter_list[0]); ++i)</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno">  271</span>    {</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno">  272</span>        <span class="keywordflow">if</span> (0 == strcmp(filter_list[i], path))</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno">  273</span>            <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno">  274</span>    }</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno">  275</span>    <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno">  276</span>}</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno">  277</span> </div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno">  278</span><span class="comment">/*******************************************************************************************************************************************</span></div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno">  279</span><span class="comment"> * Public Function</span></div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno">  280</span><span class="comment"> *******************************************************************************************************************************************/</span></div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"><a class="line" href="ui__update_8c.html#aea66c53fcc188fefaa3470555db6aa05">  288</a></span>uint8_t <a class="code hl_function" href="ui__update_8c.html#aea66c53fcc188fefaa3470555db6aa05">ui_update</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno">  289</span>{</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno">  290</span>    uint32_t result = 0;</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno">  291</span>    <span class="comment">//-----------------------------------------开机选择页面-----------------------------------------//</span></div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno">  292</span>    <span class="comment">// Create a full-screen background</span></div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno">  293</span>    lv_obj_t *obj_bg = lv_obj_create(lv_scr_act(), NULL);</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno">  294</span>    lv_obj_reset_style_list(obj_bg, LV_OBJ_PART_MAIN);</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno">  295</span>    lv_obj_set_style_local_bg_color(obj_bg, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno">  296</span>    <span class="comment">// lv_obj_set_style_local_bg_opa(obj_bg, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_50);</span></div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno">  297</span>    lv_obj_set_pos(obj_bg, 0, 0);</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno">  298</span>    lv_obj_set_size(obj_bg, LV_HOR_RES_MAX, LV_VER_RES_MAX);</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno">  299</span> </div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno">  300</span>    <span class="keyword">const</span> uint32_t mbox_show_ms = <a class="code hl_variable" href="ui__update_8c.html#a06264759c9982089ba92c1d631969196">MsgBox_Wait_Ms</a>;</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno">  301</span>    <span class="keyword">const</span> <span class="keywordtype">char</span> *btn_map[] = {<span class="stringliteral">&quot;OK&quot;</span>, <span class="stringliteral">&quot;Cancel&quot;</span>, <span class="stringliteral">&quot;&quot;</span>};</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno">  302</span>    <span class="comment">// Create the message box as a child of the modal background</span></div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno">  303</span>    lv_obj_t *mbox = lv_msgbox_create(obj_bg, NULL);</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno">  304</span>    lv_msgbox_add_btns(mbox, btn_map);</div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno">  305</span>    lv_msgbox_set_text_fmt(mbox,</div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno">  306</span>    <span class="stringliteral">&quot;If you want to enter the [UI Update / DownLoad] Please click [OK], else click [Cancel]......Timed out waiting for [%d] ms&quot;</span>,</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno">  307</span>    mbox_show_ms);</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno">  308</span>    lv_obj_set_size(mbox, LV_HOR_RES_MAX / 4 * 3, LV_VER_RES_MAX / 4 * 3);</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno">  309</span>    lv_obj_align(mbox, NULL, LV_ALIGN_CENTER, 0, 0);</div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno">  310</span>    lv_obj_set_event_cb(mbox, <a class="code hl_function" href="ui__update_8c.html#a1a09f4ed59173b0220ba241a673ea3ec">boot_select_mbox_cb</a>);</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno">  311</span>    <span class="comment">// lv_msgbox_set_anim_time(mbox, 100);</span></div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno">  312</span>    lv_msgbox_start_auto_close(mbox, mbox_show_ms);</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno">  313</span>    </div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno">  314</span>    <span class="comment">//-------------------------------------------等待选择------------------------------------------//</span></div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno">  315</span>    uint32_t prev_tick = lv_tick_get(); <span class="comment">//标记时间戳</span></div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno">  316</span>    <span class="keywordflow">for</span> (uint32_t tick_ms = 0; <a class="code hl_variable" href="ui__update_8c.html#a6e87ff056d14d5037f88d7299434bffb">Boot_Select</a> == <a class="code hl_enumvalue" href="ui__update_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a79935518a3889663d8688b6b01fff051">Default</a>; tick_ms = lv_tick_elaps(prev_tick))</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno">  317</span>    {</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno">  318</span>        lv_task_handler();</div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno">  319</span>        <span class="keywordflow">if</span> (tick_ms &gt;= mbox_show_ms) <span class="comment">//自上一个时间戳以来经过的 ms , 超时无响应则默认选择&quot;Option_Cancel&quot;</span></div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno">  320</span>        {</div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno">  321</span>            <a class="code hl_variable" href="ui__update_8c.html#a6e87ff056d14d5037f88d7299434bffb">Boot_Select</a> = <a class="code hl_enumvalue" href="ui__update_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a342bdb40ae73f9a7b19c646abfcce891">Option_Cancel</a>;</div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno">  322</span>            <a class="code hl_define" href="ui__update_8c.html#a4dd0246f2fafec4239a6404f01a15f47">UD_LOG</a>(<span class="stringliteral">&quot;User No [Select], Over Time [Option_Cancel]!\r\n&quot;</span>);</div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno">  323</span>        }</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno">  324</span>    }</div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno">  325</span>    lv_obj_del(obj_bg);</div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno">  326</span>    obj_bg = NULL;</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno">  327</span> </div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno">  328</span>    <span class="comment">//已经做出了选择!</span></div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno">  329</span>    <span class="keywordflow">switch</span> (<a class="code hl_variable" href="ui__update_8c.html#a6e87ff056d14d5037f88d7299434bffb">Boot_Select</a>)</div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno">  330</span>    {</div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno">  331</span>    <span class="keywordflow">case</span> (<a class="code hl_enumvalue" href="ui__update_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a8c6655c7178615ef6ad9485727021ee1">Option_OK</a>):</div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno">  332</span>        result = <a class="code hl_function" href="ui__update_8c.html#a4b62aef18e10709cce125faee1b7dd52">file_explorer</a>();</div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno">  333</span>        <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno">  334</span> </div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno">  335</span>    <span class="keywordflow">case</span> (<a class="code hl_enumvalue" href="ui__update_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a342bdb40ae73f9a7b19c646abfcce891">Option_Cancel</a>):</div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno">  336</span>        <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno">  337</span> </div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno">  338</span>    <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno">  339</span>        <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno">  340</span>    }</div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno">  341</span>    <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno">  342</span>}</div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno">  343</span> </div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno">  344</span><span class="comment">/*******************************************************************************************************************************************</span></div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno">  345</span><span class="comment"> * Private Function</span></div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno">  346</span><span class="comment"> *******************************************************************************************************************************************/</span></div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a1a09f4ed59173b0220ba241a673ea3ec">  353</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="ui__update_8c.html#a1a09f4ed59173b0220ba241a673ea3ec">boot_select_mbox_cb</a>(lv_obj_t *obj, lv_event_t event)</div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno">  354</span>{</div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno">  355</span>    <span class="keywordflow">if</span> (event == LV_EVENT_VALUE_CHANGED)</div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno">  356</span>    {</div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno">  357</span>        <span class="keywordflow">switch</span> (lv_msgbox_get_active_btn(obj)) <span class="comment">// lv_msgbox_get_text(obj);</span></div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno">  358</span>        {</div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno">  359</span>        <span class="keywordflow">case</span> (0):</div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno">  360</span>            <a class="code hl_variable" href="ui__update_8c.html#a6e87ff056d14d5037f88d7299434bffb">Boot_Select</a> = <a class="code hl_enumvalue" href="ui__update_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a8c6655c7178615ef6ad9485727021ee1">Option_OK</a>;</div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno">  361</span>            <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno">  362</span> </div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno">  363</span>        <span class="keywordflow">case</span> (1):</div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno">  364</span>            <a class="code hl_variable" href="ui__update_8c.html#a6e87ff056d14d5037f88d7299434bffb">Boot_Select</a> = <a class="code hl_enumvalue" href="ui__update_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a342bdb40ae73f9a7b19c646abfcce891">Option_Cancel</a>;</div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno">  365</span>            <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno">  366</span> </div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno">  367</span>        <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno">  368</span>            <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno">  369</span>        }</div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno">  370</span>        lv_msgbox_start_auto_close(obj, 0);</div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno">  371</span>    }</div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno">  372</span>}</div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno">  373</span> </div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a4b62aef18e10709cce125faee1b7dd52">  380</a></span><span class="keyword">static</span> uint8_t <a class="code hl_function" href="ui__update_8c.html#a4b62aef18e10709cce125faee1b7dd52">file_explorer</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno">  381</span>{</div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno">  382</span>    uint8_t result = 0;</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno">  383</span> </div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno">  384</span>    _lv_ll_init(&amp;<a class="code hl_variable" href="ui__update_8c.html#a527b235543e81472134d70bf86683ec7">LL_File</a>, <span class="keyword">sizeof</span>(((<a class="code hl_struct" href="structlist__dp__t.html">list_dp_t</a> *)0)-&gt;path));</div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno">  385</span>    <a class="code hl_function" href="ui__update_8c.html#a0914c8a5cdee556dcabd181982c81260">setup_scr_page</a>(&amp;<a class="code hl_variable" href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">UI</a>);</div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno">  386</span> </div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno">  387</span>scan_dir:</div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno">  388</span>    strcpy(<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>].path, <a class="code hl_variable" href="load__file_8c.html#a08687ba7285d01a737a269b697bb661c">VolumeStr</a>[<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>].disk]);</div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno">  389</span>    result = <a class="code hl_function" href="load__file_8c.html#aebe4a0d647831986c734e1788150a064">fs_mount</a>(<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>].disk);</div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno">  390</span>    <span class="keywordflow">if</span> (result != 0) <span class="comment">//(对于板载 SPI_Flash 不允许出现挂载失败的情况, 请检查硬件与底层驱动 diskio.c)</span></div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno">  391</span>    {</div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno">  392</span>        <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *btn_text[2] = {<span class="stringliteral">&quot;Please Reset MCU&quot;</span>, <span class="stringliteral">&quot;&quot;</span>};</div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno">  393</span>        <a class="code hl_define" href="ui__update_8c.html#a4dd0246f2fafec4239a6404f01a15f47">UD_LOG</a>(<span class="stringliteral">&quot;&gt; [%s] FATS mount is [%d]\r\n&quot;</span>, <a class="code hl_variable" href="load__file_8c.html#a08687ba7285d01a737a269b697bb661c">VolumeStr</a>[<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>].disk], result);</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno">  394</span>        <a class="code hl_function" href="ui__update_8c.html#af7291cda4b568af469eecf3fbf3a7094">msgbox_show</a>(<span class="stringliteral">&quot;[SPI_Flash] Mount is error! Must check [SPI_Flash]!&quot;</span>, btn_text, 0, NULL);</div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno">  395</span>        <span class="comment">//弹窗阻塞在此处, 不能接受挂载失败, 请检查硬件与底层驱动</span></div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno">  396</span>        <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno">  397</span>    }</div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno">  398</span>    <span class="comment">//打开并扫描 Flash 根目录, 呈现文件列表</span></div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno">  399</span>    result = f_opendir(&amp;<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>].dir, <a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>].path);</div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno">  400</span>    <span class="keywordflow">if</span> (result == FR_OK)</div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno">  401</span>    {</div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno">  402</span>        result = <a class="code hl_function" href="ui__update_8c.html#affa34b514b9ff8d1f0d4e1f92df3f221">scan_dir_files</a>(&amp;<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>], <a class="code hl_variable" href="ui__update_8c.html#a5af441434574979c5408785942ab0ea8">List_File_Max_Num</a>, NULL, <a class="code hl_variable" href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">UI</a>.<a class="code hl_variable" href="structlv__ui.html#a63436e3c484508c05333317adfd3bdcb">list</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>], <a class="code hl_function" href="ui__update_8c.html#abed58d04a30c85fb2231dace9f928c23">list_btn_event_handler</a>);</div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno">  403</span>    }</div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno">  404</span>    </div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno">  405</span><span class="preprocessor">#if 1 </span><span class="comment">/* 打开并扫描 Move 根目录, 呈现文件列表 */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno">  406</span>    memset(<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].path, 0, <span class="keyword">sizeof</span>(((<a class="code hl_struct" href="structlist__dp__t.html">list_dp_t</a> *)0)-&gt;path));</div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno">  407</span>    strcpy(<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].path, <a class="code hl_variable" href="load__file_8c.html#a08687ba7285d01a737a269b697bb661c">VolumeStr</a>[<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].disk]);</div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno">  408</span>    result = <a class="code hl_function" href="load__file_8c.html#aebe4a0d647831986c734e1788150a064">fs_mount</a>(<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].disk);</div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno">  409</span>    <span class="keywordflow">if</span> (result == 0)</div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno">  410</span>    {</div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno">  411</span>        result = f_opendir(&amp;<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].dir, <a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].path);</div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno">  412</span>        <span class="keywordflow">if</span> (result == FR_OK)</div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno">  413</span>        {</div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno">  414</span>            result = <a class="code hl_function" href="ui__update_8c.html#affa34b514b9ff8d1f0d4e1f92df3f221">scan_dir_files</a>(&amp;<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>], <a class="code hl_variable" href="ui__update_8c.html#a5af441434574979c5408785942ab0ea8">List_File_Max_Num</a>, <a class="code hl_function" href="ui__update_8c.html#a69a8fdfac59efe32394ac287d886ad88">file_filter_move</a>, <a class="code hl_variable" href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">UI</a>.<a class="code hl_variable" href="structlv__ui.html#a63436e3c484508c05333317adfd3bdcb">list</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>], <a class="code hl_function" href="ui__update_8c.html#abed58d04a30c85fb2231dace9f928c23">list_btn_event_handler</a>);</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno">  415</span>        }</div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno">  416</span>    }</div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno">  417</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno">  418</span>    </div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno">  419</span>    <span class="comment">//文件管理器运行态</span></div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno">  420</span>    <span class="keywordflow">for</span> (; <a class="code hl_variable" href="ui__update_8c.html#a50ade5308cd9daf421ac0c8a6f6c1f82">File_Explorer_Flag</a> == <a class="code hl_enumvalue" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0a5a286a5118e9f16961d315021d46d3b3">_BTN_MAX_</a>;)</div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno">  421</span>    {</div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno">  422</span>        lv_task_handler();</div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno">  423</span>        <a class="code hl_function" href="ui__update_8c.html#ac4bb8b84a1ae2abc7bd0419c4345bca2">dp_select_way_cb</a>(&amp;<a class="code hl_variable" href="ui__update_8c.html#af3e1747368f8a109619463c937c3f597">Select_Way</a>);</div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno">  424</span>    }</div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno">  425</span> </div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno">  426</span>    <span class="comment">//执行对应动作</span></div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno">  427</span>    <span class="keywordflow">if</span> (<a class="code hl_function" href="ui__update_8c.html#a3dbd73c82f05a5370635333b5ed68aea">btn_click_cb</a>(<a class="code hl_variable" href="ui__update_8c.html#a50ade5308cd9daf421ac0c8a6f6c1f82">File_Explorer_Flag</a>) != 0)</div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno">  428</span>    {</div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno">  429</span>        <a class="code hl_variable" href="ui__update_8c.html#a50ade5308cd9daf421ac0c8a6f6c1f82">File_Explorer_Flag</a> = <a class="code hl_enumvalue" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0a5a286a5118e9f16961d315021d46d3b3">_BTN_MAX_</a>;</div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno">  430</span>        <span class="keywordflow">goto</span> scan_dir;</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno">  431</span>    }</div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno">  432</span> </div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno">  433</span>    <span class="comment">//释放资源</span></div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno">  434</span>    _lv_ll_clear(&amp;<a class="code hl_variable" href="ui__update_8c.html#a527b235543e81472134d70bf86683ec7">LL_File</a>);</div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno">  435</span>    <a class="code hl_function" href="ui__update_8c.html#a106a57df6249072c630361740348469e">clean_scr_page</a>(&amp;<a class="code hl_variable" href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">UI</a>);</div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno">  436</span>    <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno">  437</span>}</div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno">  438</span> </div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno">  439</span><span class="comment">//============================================用户本地接口定义====================================================//</span></div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a8c94ec74d3a5db5ae3daed2ce3a5feaa">  446</a></span><span class="comment"></span><span class="keyword">static</span> uint8_t <a class="code hl_function" href="ui__update_8c.html#a8c94ec74d3a5db5ae3daed2ce3a5feaa">usb_device_msc_handler</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno">  447</span>{</div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno">  448</span>    <span class="comment">/* usb_device process state, waitting for insertion */</span></div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno">  449</span>    <span class="keywordflow">if</span> (<a class="code hl_variable" href="usbh__user_8c.html#a7d48b44a4f70758a7db6679935be7643">USB_State</a> != <a class="code hl_enumvalue" href="usbh__user_8h.html#ae829d35e41400a0bb30a3c0969152083ae1d756528efb85856a6b92f34db6c729">USB_MODE_DEVICE_MSC</a>)</div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno">  450</span>    {</div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno">  451</span>        <span class="comment">/* 停掉 USB Host process */</span></div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno">  452</span>        TIMR_Stop(<a class="code hl_define" href="usbh__user_8h.html#a7cc8c7cfcdc9b7b7bda512eb7681a30b">TIMR_USB_HOST</a>); </div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno">  453</span>        <span class="comment">/* destroy and release the user source */</span></div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno">  454</span>        USBD_Close();</div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno">  455</span> </div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno">  456</span>        <a class="code hl_function" href="_mass_storage_8c.html#aa02df815c14caedbc2fd0a8910d2e055">MSC_Init</a>();</div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno">  457</span>        <a class="code hl_variable" href="usbh__user_8c.html#a7d48b44a4f70758a7db6679935be7643">USB_State</a> = <a class="code hl_enumvalue" href="usbh__user_8h.html#ae829d35e41400a0bb30a3c0969152083ae1d756528efb85856a6b92f34db6c729">USB_MODE_DEVICE_MSC</a>;</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno">  458</span>    }</div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno">  459</span> </div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno">  460</span>    <a class="code hl_function" href="_mass_storage_8c.html#acc63e729ab9145b644fc4da28a63636e">MSC_ProcessOUT</a>();</div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno">  461</span>    <span class="keyword">static</span> uint32_t count_i = 0;</div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno">  462</span>    <span class="keywordflow">if</span> ((++count_i % 1000000) == 0) <span class="comment">/* flash e/w 很慢, 会拖慢 USB 响应 */</span></div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno">  463</span>    {</div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno">  464</span>        count_i = 0;</div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno">  465</span>        <a class="code hl_function" href="_flash_disk_8c.html#a5ab90dc9341a1459125a15b506cfe35a">FlashDiskFlush</a>();</div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno">  466</span>    }</div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno">  467</span>    <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno">  468</span>}</div>
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno">  469</span> </div>
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a64ccaf85822f651235e20a08dfc2c500">  476</a></span><span class="keyword">static</span> uint8_t <a class="code hl_function" href="ui__update_8c.html#a64ccaf85822f651235e20a08dfc2c500">move_handler</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno">  477</span>{</div>
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno">  478</span>    uint8_t result = <a class="code hl_function" href="load__file_8c.html#aebe4a0d647831986c734e1788150a064">fs_mount</a>(<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].disk);</div>
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno">  479</span>    <span class="keywordflow">if</span> (0 == result)</div>
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno">  480</span>    {</div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno">  481</span>        memset(<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].path, 0, <span class="keyword">sizeof</span>(<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].path));</div>
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno">  482</span>        strcpy(<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].path, <a class="code hl_variable" href="load__file_8c.html#a08687ba7285d01a737a269b697bb661c">VolumeStr</a>[<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].disk]);</div>
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno">  483</span>        result = f_opendir(&amp;<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].dir, <a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].path);</div>
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno">  484</span>        <span class="keywordflow">if</span> (FR_OK == result)</div>
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno">  485</span>        {</div>
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno">  486</span>            result = <a class="code hl_function" href="ui__update_8c.html#affa34b514b9ff8d1f0d4e1f92df3f221">scan_dir_files</a>(&amp;<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>], <a class="code hl_variable" href="ui__update_8c.html#a5af441434574979c5408785942ab0ea8">List_File_Max_Num</a>, <a class="code hl_function" href="ui__update_8c.html#a69a8fdfac59efe32394ac287d886ad88">file_filter_move</a>, <a class="code hl_variable" href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">UI</a>.<a class="code hl_variable" href="structlv__ui.html#a63436e3c484508c05333317adfd3bdcb">list</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>], <a class="code hl_function" href="ui__update_8c.html#abed58d04a30c85fb2231dace9f928c23">list_btn_event_handler</a>);</div>
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno">  487</span>            <span class="keywordflow">if</span> (result == 0)</div>
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno">  488</span>            {</div>
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno">  489</span>                <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno">  490</span>            }</div>
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno">  491</span>        }</div>
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno">  492</span>    }</div>
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno">  493</span> </div>
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno">  494</span>    lv_list_clean(<a class="code hl_variable" href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">UI</a>.<a class="code hl_variable" href="structlv__ui.html#a63436e3c484508c05333317adfd3bdcb">list</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>]);</div>
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno">  495</span>    <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno">  496</span>}</div>
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno">  497</span> </div>
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"><a class="line" href="ui__update_8c.html#affa34b514b9ff8d1f0d4e1f92df3f221">  508</a></span><span class="keyword">static</span> FRESULT <a class="code hl_function" href="ui__update_8c.html#affa34b514b9ff8d1f0d4e1f92df3f221">scan_dir_files</a>(<a class="code hl_struct" href="structlist__dp__t.html">list_dp_t</a> *list_data, uint16_t file_num, uint8_t (*file_filter)(<span class="keyword">const</span> <span class="keywordtype">char</span> *),</div>
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno">  509</span>                              lv_obj_t *list, lv_event_cb_t btn_event_cb)</div>
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno">  510</span>{</div>
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno">  511</span>    FRESULT res;</div>
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno">  512</span>    lv_obj_t *list_btn;</div>
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno">  513</span>    <span class="keywordtype">char</span> symbol_icon[strlen(LV_SYMBOL_UPLOAD) + 1];</div>
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno">  514</span>    <span class="comment">//限制单次读取数量, 采用翻页机制, 以规避初始化建表时间过长,</span></div>
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno">  515</span>    <span class="comment">//缺点是单链只能顺序遍历不能返回, 且 FATFS 文档中描述 DIR 结构不允许用户访问,</span></div>
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno">  516</span>    <span class="comment">//故无法标记实际节点, 需要用户在外部设立变量节点进行跟踪(目前暂未实现, 上一页功能)</span></div>
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno">  517</span>    <span class="keywordflow">for</span> (uint16_t i = 0; i &lt; file_num;)</div>
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno">  518</span>    {</div>
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno">  519</span>        res = f_readdir(&amp;list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#aa59fe1cb43760885aa78301453764fe0">dir</a>, &amp;list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#adb2adf9b3f315041beb78852fa37a984">fno</a>); <span class="comment">//遍历目录</span></div>
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno">  520</span>        <span class="keywordflow">if</span> ((res != FR_OK) || (list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#adb2adf9b3f315041beb78852fa37a984">fno</a>.fname[0] == 0))</div>
<div class="line"><a id="l00521" name="l00521"></a><span class="lineno">  521</span>            <span class="keywordflow">break</span>; <span class="comment">//读取发生错误 or 读取到末尾</span></div>
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno">  522</span> </div>
<div class="line"><a id="l00523" name="l00523"></a><span class="lineno">  523</span>        <span class="keywordflow">if</span> (i == 0)</div>
<div class="line"><a id="l00524" name="l00524"></a><span class="lineno">  524</span>        {</div>
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno">  525</span>            <span class="comment">//刷新当前列表</span></div>
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno">  526</span>            lv_list_clean(list);</div>
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno">  527</span>            <span class="comment">//不保存上一次的列表点击信息</span></div>
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno">  528</span>            _lv_ll_clear(&amp;<a class="code hl_variable" href="ui__update_8c.html#a527b235543e81472134d70bf86683ec7">LL_File</a>);</div>
<div class="line"><a id="l00529" name="l00529"></a><span class="lineno">  529</span> </div>
<div class="line"><a id="l00530" name="l00530"></a><span class="lineno">  530</span>            <span class="comment">//第一项为返回上级目录</span></div>
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno">  531</span>            list_btn = lv_list_add_btn(list, LV_SYMBOL_LEFT, <a class="code hl_variable" href="ui__update_8c.html#abd8caa3698afa6b173633a32e0d36ec4">Back_Str</a>);</div>
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno">  532</span>            lv_btn_set_checkable(list_btn, <span class="keyword">true</span>); <span class="comment">//为了统一触发 value_change 事件</span></div>
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno">  533</span>            lv_obj_set_event_cb(list_btn, btn_event_cb);</div>
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno">  534</span>        }</div>
<div class="line"><a id="l00535" name="l00535"></a><span class="lineno">  535</span> </div>
<div class="line"><a id="l00536" name="l00536"></a><span class="lineno">  536</span>        <span class="keywordflow">if</span> (list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#adb2adf9b3f315041beb78852fa37a984">fno</a>.fattrib &amp; AM_DIR) <span class="comment">//文件夹</span></div>
<div class="line"><a id="l00537" name="l00537"></a><span class="lineno">  537</span>        {</div>
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno">  538</span>            memcpy(symbol_icon, LV_SYMBOL_DIRECTORY, <span class="keyword">sizeof</span>(LV_SYMBOL_DIRECTORY));</div>
<div class="line"><a id="l00539" name="l00539"></a><span class="lineno">  539</span>        }</div>
<div class="line"><a id="l00540" name="l00540"></a><span class="lineno">  540</span>        <span class="keywordflow">else</span> <span class="comment">//文件</span></div>
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno">  541</span>        {</div>
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno">  542</span>            <span class="keywordflow">if</span> (file_filter != NULL) <span class="comment">//过滤器已注册</span></div>
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno">  543</span>            {</div>
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno">  544</span>                <span class="keywordflow">if</span> (file_filter(list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#adb2adf9b3f315041beb78852fa37a984">fno</a>.fname) == 0)</div>
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno">  545</span>                    <span class="keywordflow">continue</span>;</div>
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno">  546</span>            }</div>
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno">  547</span> </div>
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno">  548</span>            <span class="keywordtype">char</span> *ret = strrchr(list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#adb2adf9b3f315041beb78852fa37a984">fno</a>.fname, <a class="code hl_variable" href="ui__update_8c.html#a0f600edde0d29f18851c4f5de5a9fc3d">Dot_Ch</a>); <span class="comment">//获取文件后缀名</span></div>
<div class="line"><a id="l00549" name="l00549"></a><span class="lineno">  549</span>            <span class="keywordflow">if</span> (ret != NULL)</div>
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno">  550</span>            {</div>
<div class="line"><a id="l00551" name="l00551"></a><span class="lineno">  551</span>                <span class="keywordflow">if</span> (strncmp(ret, <span class="stringliteral">&quot;.bin&quot;</span>, 5) == 0)</div>
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno">  552</span>                {</div>
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno">  553</span>                    memcpy(symbol_icon, LV_SYMBOL_FILE, <span class="keyword">sizeof</span>(LV_SYMBOL_FILE));</div>
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno">  554</span>                }</div>
<div class="line"><a id="l00555" name="l00555"></a><span class="lineno">  555</span>                <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((strncmp(ret, <span class="stringliteral">&quot;.jpg&quot;</span>, 5) == 0) || (strncmp(ret, <span class="stringliteral">&quot;.bmp&quot;</span>, 5) == 0) ||</div>
<div class="line"><a id="l00556" name="l00556"></a><span class="lineno">  556</span>                         (strncmp(ret, <span class="stringliteral">&quot;.png&quot;</span>, 5) == 0) || (strncmp(ret, <span class="stringliteral">&quot;.gif&quot;</span>, 5) == 0))</div>
<div class="line"><a id="l00557" name="l00557"></a><span class="lineno">  557</span>                {</div>
<div class="line"><a id="l00558" name="l00558"></a><span class="lineno">  558</span>                    memcpy(symbol_icon, LV_SYMBOL_IMAGE, <span class="keyword">sizeof</span>(LV_SYMBOL_IMAGE));</div>
<div class="line"><a id="l00559" name="l00559"></a><span class="lineno">  559</span>                }</div>
<div class="line"><a id="l00560" name="l00560"></a><span class="lineno">  560</span>                <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((strncmp(ret, <span class="stringliteral">&quot;.wav&quot;</span>, 5) == 0) || (strncmp(ret, <span class="stringliteral">&quot;.mp3&quot;</span>, 5) == 0))</div>
<div class="line"><a id="l00561" name="l00561"></a><span class="lineno">  561</span>                {</div>
<div class="line"><a id="l00562" name="l00562"></a><span class="lineno">  562</span>                    memcpy(symbol_icon, LV_SYMBOL_AUDIO, <span class="keyword">sizeof</span>(LV_SYMBOL_AUDIO));</div>
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno">  563</span>                }</div>
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno">  564</span>                <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((strncmp(ret, <span class="stringliteral">&quot;.avi&quot;</span>, 5) == 0) || (strncmp(ret, <span class="stringliteral">&quot;.mp4&quot;</span>, 5) == 0))</div>
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno">  565</span>                {</div>
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno">  566</span>                    memcpy(symbol_icon, LV_SYMBOL_VIDEO, <span class="keyword">sizeof</span>(LV_SYMBOL_VIDEO));</div>
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno">  567</span>                }</div>
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno">  568</span>                <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((strncmp(ret, <span class="stringliteral">&quot;.c&quot;</span>, 3) == 0) || (strncmp(ret, <span class="stringliteral">&quot;.h&quot;</span>, 3) == 0) ||</div>
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno">  569</span>                         (strncmp(ret, <span class="stringliteral">&quot;.txt&quot;</span>, 5) == 0))</div>
<div class="line"><a id="l00570" name="l00570"></a><span class="lineno">  570</span>                {</div>
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno">  571</span>                    memcpy(symbol_icon, LV_SYMBOL_EDIT, <span class="keyword">sizeof</span>(LV_SYMBOL_EDIT));</div>
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno">  572</span>                }</div>
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno">  573</span>                <span class="keywordflow">else</span></div>
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno">  574</span>                {</div>
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno">  575</span>                    memcpy(symbol_icon, LV_SYMBOL_PASTE, <span class="keyword">sizeof</span>(LV_SYMBOL_PASTE));</div>
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno">  576</span>                }</div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno">  577</span>            }</div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno">  578</span>            <span class="keywordflow">else</span></div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno">  579</span>            {</div>
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno">  580</span>                <span class="keywordflow">continue</span>;</div>
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno">  581</span>            }</div>
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno">  582</span>        }</div>
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno">  583</span>        <span class="comment">//添加 btn</span></div>
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno">  584</span>        list_btn = lv_list_add_btn(list, symbol_icon, list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#adb2adf9b3f315041beb78852fa37a984">fno</a>.fname);</div>
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno">  585</span>        lv_btn_set_checkable(list_btn, <span class="keyword">true</span>); <span class="comment">//为了统一触发 value_change 事件</span></div>
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno">  586</span>        lv_obj_set_event_cb(list_btn, btn_event_cb);</div>
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno">  587</span> </div>
<div class="line"><a id="l00588" name="l00588"></a><span class="lineno">  588</span>        ++i; <span class="comment">//只有符合条件的才计入队列, 并生成对应按钮</span></div>
<div class="line"><a id="l00589" name="l00589"></a><span class="lineno">  589</span>    }</div>
<div class="line"><a id="l00590" name="l00590"></a><span class="lineno">  590</span>    <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l00591" name="l00591"></a><span class="lineno">  591</span>}</div>
<div class="line"><a id="l00592" name="l00592"></a><span class="lineno">  592</span> </div>
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno"><a class="line" href="ui__update_8c.html#ac4bb8b84a1ae2abc7bd0419c4345bca2">  598</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="ui__update_8c.html#ac4bb8b84a1ae2abc7bd0419c4345bca2">dp_select_way_cb</a>(<a class="code hl_enumeration" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2">way_t</a> *way)</div>
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno">  599</span>{</div>
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno">  600</span>    <span class="keywordtype">char</span> msg_text[FF_MAX_LFN];</div>
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno">  601</span>    <span class="keywordflow">switch</span> (*way)</div>
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno">  602</span>    {</div>
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno">  603</span>    <span class="keywordflow">case</span> (<a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a438765e1f3129ec9a15a3750f85ba17c">WAY_SD</a>):</div>
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno">  604</span>    {</div>
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno">  605</span>        <a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].<a class="code hl_variable" href="structlist__dp__t.html#affcceda12b139f26819f4929be705eb1">disk</a> = <a class="code hl_enumvalue" href="load__file_8h.html#a44edb5dd69763758dda6af4dd162c997a8268cafd51299d814aba050e5f54f1ac">SD</a>;</div>
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno">  606</span>    }</div>
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno">  607</span>    <span class="comment">// break;//continue</span></div>
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno">  608</span>    </div>
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno">  609</span>    <span class="keywordflow">case</span> (<a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a7da97547825333c89d5835511c00e334">WAY_USB_H</a>):</div>
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno">  610</span>    {</div>
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno">  611</span>        <span class="keywordflow">if</span> (*way == <a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a7da97547825333c89d5835511c00e334">WAY_USB_H</a>)</div>
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno">  612</span>        {</div>
<div class="line"><a id="l00613" name="l00613"></a><span class="lineno">  613</span>            <a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].<a class="code hl_variable" href="structlist__dp__t.html#affcceda12b139f26819f4929be705eb1">disk</a> = <a class="code hl_enumvalue" href="load__file_8h.html#a44edb5dd69763758dda6af4dd162c997a65f6b55fdc64778bf10632a795b97761">USB</a>;</div>
<div class="line"><a id="l00614" name="l00614"></a><span class="lineno">  614</span>        }</div>
<div class="line"><a id="l00615" name="l00615"></a><span class="lineno">  615</span>        <span class="comment">//清除按钮</span></div>
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno">  616</span>        lv_list_clean(<a class="code hl_variable" href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">UI</a>.<a class="code hl_variable" href="structlv__ui.html#a63436e3c484508c05333317adfd3bdcb">list</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>]);</div>
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno">  617</span>        <span class="comment">//标题栏更新显示</span></div>
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno">  618</span>        lv_label_set_text(<a class="code hl_variable" href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">UI</a>.<a class="code hl_variable" href="structlv__ui.html#acc037b4a511f3f67178aac07b1f0200a">list_label</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>], <a class="code hl_variable" href="load__file_8c.html#a08687ba7285d01a737a269b697bb661c">VolumeStr</a>[<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].<a class="code hl_variable" href="structlist__dp__t.html#affcceda12b139f26819f4929be705eb1">disk</a>]);</div>
<div class="line"><a id="l00619" name="l00619"></a><span class="lineno">  619</span>        <span class="comment">//执行对应任务回调</span></div>
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno">  620</span>        sprintf(msg_text, <span class="stringliteral">&quot;Check [%s] Waiting......&quot;</span>, <a class="code hl_variable" href="ui__update_8c.html#a6b9762fb44e1c11b05dd4384e004ee16">Way_Text</a>[*way]);</div>
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno">  621</span>        <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *btn_text[2] = {<span class="stringliteral">&quot;Cancel&quot;</span>, <span class="stringliteral">&quot;&quot;</span>};</div>
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno">  622</span>        <a class="code hl_function" href="ui__update_8c.html#af7291cda4b568af469eecf3fbf3a7094">msgbox_show</a>(msg_text, btn_text, <a class="code hl_variable" href="ui__update_8c.html#a06264759c9982089ba92c1d631969196">MsgBox_Wait_Ms</a>, <a class="code hl_function" href="ui__update_8c.html#a64ccaf85822f651235e20a08dfc2c500">move_handler</a>);</div>
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno">  623</span>    }</div>
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno">  624</span>        <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno">  625</span> </div>
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno">  626</span>    <span class="keywordflow">case</span> (<a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a94ed3d890336aa209cd2e7e9fa2ace11">WAY_USB_D</a>):</div>
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno">  627</span>    {</div>
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno">  628</span>        <span class="comment">//清除按钮</span></div>
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno">  629</span>        lv_list_clean(<a class="code hl_variable" href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">UI</a>.<a class="code hl_variable" href="structlv__ui.html#a63436e3c484508c05333317adfd3bdcb">list</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>]);</div>
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno">  630</span>        <span class="comment">//标题栏更新显示</span></div>
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno">  631</span>        lv_label_set_text(<a class="code hl_variable" href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">UI</a>.<a class="code hl_variable" href="structlv__ui.html#acc037b4a511f3f67178aac07b1f0200a">list_label</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>], <a class="code hl_variable" href="load__file_8c.html#a08687ba7285d01a737a269b697bb661c">VolumeStr</a>[<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].<a class="code hl_variable" href="structlist__dp__t.html#affcceda12b139f26819f4929be705eb1">disk</a>]);</div>
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno">  632</span>        <span class="comment">//执行对应任务回调</span></div>
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno">  633</span>        sprintf(msg_text, <span class="stringliteral">&quot;Waiting for [%s] to connect......&quot;</span>, <span class="stringliteral">&quot;Your PC&quot;</span>);</div>
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno">  634</span>        <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *btn_text[2] = {<span class="stringliteral">&quot;Disconnect&quot;</span>, <span class="stringliteral">&quot;&quot;</span>};</div>
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno">  635</span>        <a class="code hl_function" href="ui__update_8c.html#af7291cda4b568af469eecf3fbf3a7094">msgbox_show</a>(msg_text, btn_text, 0, <a class="code hl_function" href="ui__update_8c.html#a8c94ec74d3a5db5ae3daed2ce3a5feaa">usb_device_msc_handler</a>);</div>
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno">  636</span>    }</div>
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno">  637</span>        <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno">  638</span> </div>
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno">  639</span>    <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno">  640</span>        <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno">  641</span>    }</div>
<div class="line"><a id="l00642" name="l00642"></a><span class="lineno">  642</span>    *way = <a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2ae4c3097bd87be672f365e2e5802667ac">_WAY_MAX_</a>; <span class="comment">//执行完毕则置为无效</span></div>
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno">  643</span>}</div>
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno">  644</span> </div>
<div class="line"><a id="l00651" name="l00651"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a3dbd73c82f05a5370635333b5ed68aea">  651</a></span><span class="keyword">static</span> uint32_t <a class="code hl_function" href="ui__update_8c.html#a3dbd73c82f05a5370635333b5ed68aea">btn_click_cb</a>(<a class="code hl_enumeration" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0">btn_jump_t</a> btn_flag)</div>
<div class="line"><a id="l00652" name="l00652"></a><span class="lineno">  652</span>{</div>
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno">  653</span>    uint32_t result = 0;</div>
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno">  654</span>    <span class="keywordtype">char</span> msg_text[FF_MAX_LFN];</div>
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno">  655</span> </div>
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno">  656</span>    <span class="keywordflow">switch</span> (btn_flag) <span class="comment">//点击后对应执行</span></div>
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno">  657</span>    {</div>
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno">  658</span>    <span class="keywordflow">case</span> (<a class="code hl_enumvalue" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0ad892aae0696cbd7fbe95386c8e74d5fb">BTN_LIST</a>):</div>
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno">  659</span>        <span class="keywordflow">if</span> (!_lv_ll_is_empty(&amp;<a class="code hl_variable" href="ui__update_8c.html#a527b235543e81472134d70bf86683ec7">LL_File</a>)) <span class="comment">//非空则进行拷贝</span></div>
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno">  660</span>        {</div>
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno">  661</span>            result = <a class="code hl_function" href="file__table_8c.html#ae9814059aade68167dd27fac6439fa67">show_copying_file_list</a>(<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].disk, <a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>].disk, &amp;<a class="code hl_variable" href="ui__update_8c.html#a527b235543e81472134d70bf86683ec7">LL_File</a>);</div>
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno">  662</span>            <span class="keywordflow">if</span> (0 != result) <span class="comment">//拷贝过程出现错误</span></div>
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno">  663</span>            {</div>
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno">  664</span>                memset(msg_text, 0, <span class="keyword">sizeof</span>(msg_text));</div>
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno">  665</span>                sprintf(msg_text, <span class="stringliteral">&quot;Copy Files [%s] -&gt; [%s] : Debug_FR_Table - [%d]&quot;</span>, <a class="code hl_variable" href="load__file_8c.html#a08687ba7285d01a737a269b697bb661c">VolumeStr</a>[<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].disk], <a class="code hl_variable" href="load__file_8c.html#a08687ba7285d01a737a269b697bb661c">VolumeStr</a>[<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>].disk], result);</div>
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno">  666</span>                <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *btn_text[2] = {<span class="stringliteral">&quot;Cancel&quot;</span>, <span class="stringliteral">&quot;&quot;</span>};</div>
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno">  667</span>                <a class="code hl_function" href="ui__update_8c.html#af7291cda4b568af469eecf3fbf3a7094">msgbox_show</a>(msg_text, btn_text, <a class="code hl_variable" href="ui__update_8c.html#a06264759c9982089ba92c1d631969196">MsgBox_Wait_Ms</a>, NULL);</div>
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno">  668</span>                <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno">  669</span>            }</div>
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno">  670</span>        }</div>
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno">  671</span>        <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00672" name="l00672"></a><span class="lineno">  672</span> </div>
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno">  673</span>    <span class="keywordflow">case</span> (<a class="code hl_enumvalue" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0a389a5271294f16b165df84d82777da64">BTN_ALL</a>):</div>
<div class="line"><a id="l00674" name="l00674"></a><span class="lineno">  674</span>        result = <a class="code hl_function" href="file__table_8c.html#a3b8264ecd2971c7f1409a78c16a80fff">check_file_table</a>(<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].disk, &amp;<a class="code hl_variable" href="file__table_8c.html#a210f9e081ee07b322afeec966766b06a">File_Table</a>, <a class="code hl_define" href="file__table_8h.html#ac8e6df38331152c1e09f9a43e6ab34a3">FT_MOVE_VIDEO</a> + 1, <a class="code hl_variable" href="file__table_8c.html#a210f9e081ee07b322afeec966766b06a">File_Table</a>.<a class="code hl_variable" href="structtable__class__t.html#a50759ab8147814e1075b574b51d12e64">table_size</a> - 1);</div>
<div class="line"><a id="l00675" name="l00675"></a><span class="lineno">  675</span>        <span class="comment">//校验 UI 素材完整则直接进入 更新素材 环节, 否则抛出错误</span></div>
<div class="line"><a id="l00676" name="l00676"></a><span class="lineno">  676</span>        <span class="keywordflow">if</span> (0 != result)</div>
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno">  677</span>        {</div>
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno">  678</span>            memset(msg_text, 0, <span class="keyword">sizeof</span>(msg_text));</div>
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno">  679</span>            sprintf(msg_text, <span class="stringliteral">&quot;[%s] No File : [%s]&quot;</span>, <a class="code hl_variable" href="load__file_8c.html#a08687ba7285d01a737a269b697bb661c">VolumeStr</a>[<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].disk], <a class="code hl_variable" href="file__table_8c.html#a210f9e081ee07b322afeec966766b06a">File_Table</a>.<a class="code hl_variable" href="structtable__class__t.html#a5be3dd4ebfa388f80036fee2ac2768f1">file</a>[result - 1].<a class="code hl_variable" href="structuser__file__t.html#a8f8f80d37794cde9472343e4487ba3eb">name</a>);</div>
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno">  680</span>            <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *btn_text[2] = {<span class="stringliteral">&quot;Cancel&quot;</span>, <span class="stringliteral">&quot;&quot;</span>};</div>
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno">  681</span>            <a class="code hl_function" href="ui__update_8c.html#af7291cda4b568af469eecf3fbf3a7094">msgbox_show</a>(msg_text, btn_text, <a class="code hl_variable" href="ui__update_8c.html#a06264759c9982089ba92c1d631969196">MsgBox_Wait_Ms</a>, NULL);</div>
<div class="line"><a id="l00682" name="l00682"></a><span class="lineno">  682</span>            <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno">  683</span>        }   </div>
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno">  684</span>        result = <a class="code hl_function" href="load__file_8c.html#a51d572edecc93d80a160b93843fb5208">fs_mkfs</a>(<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>].disk);</div>
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno">  685</span>        <span class="keywordflow">if</span> (FR_OK != result) <span class="comment">// SPI_Flash 格式化</span></div>
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno">  686</span>        {</div>
<div class="line"><a id="l00687" name="l00687"></a><span class="lineno">  687</span>            <a class="code hl_define" href="ui__update_8c.html#a4dd0246f2fafec4239a6404f01a15f47">UD_LOG</a>(<span class="stringliteral">&quot;&gt; [SPI_Flash] FATS Formatting is [%d]\r\n&quot;</span>, result);</div>
<div class="line"><a id="l00688" name="l00688"></a><span class="lineno">  688</span>            <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *btn_text[2] = {<span class="stringliteral">&quot;Please Reset MCU&quot;</span>, <span class="stringliteral">&quot;&quot;</span>};</div>
<div class="line"><a id="l00689" name="l00689"></a><span class="lineno">  689</span>            <a class="code hl_function" href="ui__update_8c.html#af7291cda4b568af469eecf3fbf3a7094">msgbox_show</a>(<span class="stringliteral">&quot;[SPI_Flash] Formatting is error! Must check [SPI_Flash]!&quot;</span>, btn_text, 0, NULL);</div>
<div class="line"><a id="l00690" name="l00690"></a><span class="lineno">  690</span>            <span class="comment">//弹窗阻塞在此处, 不能接受格式化失败, 请检查硬件与底层驱动</span></div>
<div class="line"><a id="l00691" name="l00691"></a><span class="lineno">  691</span>        }</div>
<div class="line"><a id="l00692" name="l00692"></a><span class="lineno">  692</span>        <span class="comment">//分段拷贝测试(先拷贝小容量的 jpeg、bin, 最后再集中拷贝耗时较长的 avi 视频)</span></div>
<div class="line"><a id="l00693" name="l00693"></a><span class="lineno">  693</span>        <span class="comment">//这样做的原因是因为个别用户反映开头拷贝视频等待时间过长, 错误认为程序执行错误跑飞, 不愿耐心等待下去.</span></div>
<div class="line"><a id="l00694" name="l00694"></a><span class="lineno">  694</span>        result = <a class="code hl_function" href="file__table_8c.html#a9f89967794eeb4df91c77da5f983e163">show_copying_file_table</a>(<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].disk, <a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>].disk, &amp;<a class="code hl_variable" href="file__table_8c.html#a210f9e081ee07b322afeec966766b06a">File_Table</a>, <a class="code hl_define" href="file__table_8h.html#a53bd581d915222e8bcbd0f453dcc60ef">FT_IMG_START</a>, <a class="code hl_define" href="file__table_8h.html#a9e2b981a0be65b6e5506b5c71aa62753">FT_IMG_NUM</a>); </div>
<div class="line"><a id="l00695" name="l00695"></a><span class="lineno">  695</span>        <span class="comment">//File_Table.table_size - FT_FONT_NUM - FT_MUSIC_NUM - FT_VIDEO_NUM == FT_IMG_NUM</span></div>
<div class="line"><a id="l00696" name="l00696"></a><span class="lineno">  696</span>        <span class="keywordflow">if</span> (0 == result)</div>
<div class="line"><a id="l00697" name="l00697"></a><span class="lineno">  697</span>        {</div>
<div class="line"><a id="l00698" name="l00698"></a><span class="lineno">  698</span>            <span class="comment">/* 对于 RGB 屏, 仅跳过 SD 卡视频文件 */</span></div>
<div class="line"><a id="l00699" name="l00699"></a><span class="lineno">  699</span>            result = <a class="code hl_function" href="file__table_8c.html#a9f89967794eeb4df91c77da5f983e163">show_copying_file_table</a>(<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].disk, <a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>].disk, </div>
<div class="line"><a id="l00700" name="l00700"></a><span class="lineno">  700</span>            &amp;<a class="code hl_variable" href="file__table_8c.html#a210f9e081ee07b322afeec966766b06a">File_Table</a>, <a class="code hl_define" href="file__table_8h.html#ac8e6df38331152c1e09f9a43e6ab34a3">FT_MOVE_VIDEO</a> + 1, <a class="code hl_define" href="file__table_8h.html#ad9072054406a903237e6ea1c0e6ff327">FT_FONT_NUM</a> + <a class="code hl_define" href="file__table_8h.html#aec25a2051242e8cef091f04dc5efb53f">FT_MUSIC_NUM</a> + <a class="code hl_define" href="file__table_8h.html#ac482e9c7e4db518dbc7e02d01d8caa3d">FT_VIDEO_NUM</a> - 1);</div>
<div class="line"><a id="l00701" name="l00701"></a><span class="lineno">  701</span>        }</div>
<div class="line"><a id="l00702" name="l00702"></a><span class="lineno">  702</span>        <span class="keywordflow">if</span> (0 != result) <span class="comment">//拷贝过程出现错误</span></div>
<div class="line"><a id="l00703" name="l00703"></a><span class="lineno">  703</span>        {</div>
<div class="line"><a id="l00704" name="l00704"></a><span class="lineno">  704</span>            memset(msg_text, 0, <span class="keyword">sizeof</span>(msg_text));</div>
<div class="line"><a id="l00705" name="l00705"></a><span class="lineno">  705</span>            sprintf(msg_text, <span class="stringliteral">&quot;Copy Files [%s] -&gt; [%s] : Debug_FR_Table - [%d]&quot;</span>, <a class="code hl_variable" href="load__file_8c.html#a08687ba7285d01a737a269b697bb661c">VolumeStr</a>[<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].disk], <a class="code hl_variable" href="load__file_8c.html#a08687ba7285d01a737a269b697bb661c">VolumeStr</a>[<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>].disk], result);</div>
<div class="line"><a id="l00706" name="l00706"></a><span class="lineno">  706</span>            <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *btn_text[2] = {<span class="stringliteral">&quot;Cancel&quot;</span>, <span class="stringliteral">&quot;&quot;</span>};</div>
<div class="line"><a id="l00707" name="l00707"></a><span class="lineno">  707</span>            <a class="code hl_function" href="ui__update_8c.html#af7291cda4b568af469eecf3fbf3a7094">msgbox_show</a>(msg_text, btn_text, <a class="code hl_variable" href="ui__update_8c.html#a06264759c9982089ba92c1d631969196">MsgBox_Wait_Ms</a>, NULL);</div>
<div class="line"><a id="l00708" name="l00708"></a><span class="lineno">  708</span>            <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00709" name="l00709"></a><span class="lineno">  709</span>        }</div>
<div class="line"><a id="l00710" name="l00710"></a><span class="lineno">  710</span> </div>
<div class="line"><a id="l00711" name="l00711"></a><span class="lineno">  711</span>        <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00712" name="l00712"></a><span class="lineno">  712</span> </div>
<div class="line"><a id="l00713" name="l00713"></a><span class="lineno">  713</span>    <span class="keywordflow">case</span> (<a class="code hl_enumvalue" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0a1ca55de3fb737acafbed5b694df304d9">BTN_DFU</a>):</div>
<div class="line"><a id="l00714" name="l00714"></a><span class="lineno">  714</span>    {</div>
<div class="line"><a id="l00715" name="l00715"></a><span class="lineno">  715</span>        <span class="keywordtype">char</span> firmware_path_update[FF_MAX_LFN]; <span class="comment">//更新固件的绝对路径</span></div>
<div class="line"><a id="l00716" name="l00716"></a><span class="lineno">  716</span>        memset(firmware_path_update, 0, <span class="keyword">sizeof</span>(firmware_path_update));</div>
<div class="line"><a id="l00717" name="l00717"></a><span class="lineno">  717</span>        sprintf(firmware_path_update, <span class="stringliteral">&quot;%s%s&quot;</span>, <a class="code hl_variable" href="load__file_8c.html#a08687ba7285d01a737a269b697bb661c">VolumeStr</a>[<a class="code hl_variable" href="userboot_8c.html#a28c8f7a4d5f717351aca6027fd3d7ab7">Firmware_Disk</a>], <a class="code hl_variable" href="userboot_8c.html#a24048df1d0e7c6baee931ac9501003b6">Firmware_Name_Update</a>);</div>
<div class="line"><a id="l00718" name="l00718"></a><span class="lineno">  718</span> </div>
<div class="line"><a id="l00719" name="l00719"></a><span class="lineno">  719</span>        <span class="keywordtype">char</span> firmware_path_move[FF_MAX_LFN]; <span class="comment">//外部固件的绝对路径</span></div>
<div class="line"><a id="l00720" name="l00720"></a><span class="lineno">  720</span>        memset(firmware_path_move, 0, <span class="keyword">sizeof</span>(firmware_path_move));</div>
<div class="line"><a id="l00721" name="l00721"></a><span class="lineno">  721</span>        <span class="keywordflow">if</span> (_lv_ll_is_empty(&amp;<a class="code hl_variable" href="ui__update_8c.html#a527b235543e81472134d70bf86683ec7">LL_File</a>)) <span class="comment">//没有点击选取文件, 搜索默认配置</span></div>
<div class="line"><a id="l00722" name="l00722"></a><span class="lineno">  722</span>        {</div>
<div class="line"><a id="l00723" name="l00723"></a><span class="lineno">  723</span>            sprintf(firmware_path_move, <span class="stringliteral">&quot;%s%s&quot;</span>, <a class="code hl_variable" href="load__file_8c.html#a08687ba7285d01a737a269b697bb661c">VolumeStr</a>[<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].disk], <a class="code hl_variable" href="userboot_8c.html#a24048df1d0e7c6baee931ac9501003b6">Firmware_Name_Update</a>);</div>
<div class="line"><a id="l00724" name="l00724"></a><span class="lineno">  724</span>        }</div>
<div class="line"><a id="l00725" name="l00725"></a><span class="lineno">  725</span>        <span class="keywordflow">else</span> <span class="comment">//非空则选取最后一个点击的文件</span></div>
<div class="line"><a id="l00726" name="l00726"></a><span class="lineno">  726</span>        {</div>
<div class="line"><a id="l00727" name="l00727"></a><span class="lineno">  727</span>            <span class="keywordtype">char</span> *ll_ptr = _lv_ll_get_head(&amp;<a class="code hl_variable" href="ui__update_8c.html#a527b235543e81472134d70bf86683ec7">LL_File</a>);</div>
<div class="line"><a id="l00728" name="l00728"></a><span class="lineno">  728</span>            strcpy(firmware_path_move, ll_ptr);</div>
<div class="line"><a id="l00729" name="l00729"></a><span class="lineno">  729</span>        }</div>
<div class="line"><a id="l00730" name="l00730"></a><span class="lineno">  730</span>        <span class="comment">//进行下载, 由于此函数是阻塞的, 故此处儿屏幕会卡住一会儿, 可通过串口日志打印查看拷贝进度</span></div>
<div class="line"><a id="l00731" name="l00731"></a><span class="lineno">  731</span>        result = <a class="code hl_function" href="userboot_8c.html#a759a4106353e92e06e9d15926228c576">firmware_download</a>(firmware_path_move, firmware_path_update, <a class="code hl_function" href="userboot_8c.html#a52a519a37465a7b4515a237114afa802">data_encode</a>);</div>
<div class="line"><a id="l00732" name="l00732"></a><span class="lineno">  732</span> </div>
<div class="line"><a id="l00733" name="l00733"></a><span class="lineno">  733</span>        lv_task_handler();</div>
<div class="line"><a id="l00734" name="l00734"></a><span class="lineno">  734</span> </div>
<div class="line"><a id="l00735" name="l00735"></a><span class="lineno">  735</span>        <span class="comment">//将 固件下载结果 通过 弹出消息框 以提示用户</span></div>
<div class="line"><a id="l00736" name="l00736"></a><span class="lineno">  736</span>        memset(msg_text, 0, <span class="keyword">sizeof</span>(msg_text));</div>
<div class="line"><a id="l00737" name="l00737"></a><span class="lineno">  737</span>        sprintf(msg_text, <span class="stringliteral">&quot;Device Firmware Update [%s] is %s&quot;</span>, firmware_path_move, (result == 0) ? <span class="stringliteral">&quot;Success, Please Restart MCU&quot;</span> : <span class="stringliteral">&quot;Fail, Please Check Firmware&quot;</span>);</div>
<div class="line"><a id="l00738" name="l00738"></a><span class="lineno">  738</span>        <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *btn_text[2] = {<span class="stringliteral">&quot;I Already Know!&quot;</span>, <span class="stringliteral">&quot;&quot;</span>};</div>
<div class="line"><a id="l00739" name="l00739"></a><span class="lineno">  739</span>        <a class="code hl_function" href="ui__update_8c.html#af7291cda4b568af469eecf3fbf3a7094">msgbox_show</a>(msg_text, btn_text, <a class="code hl_variable" href="ui__update_8c.html#a06264759c9982089ba92c1d631969196">MsgBox_Wait_Ms</a>, NULL);</div>
<div class="line"><a id="l00740" name="l00740"></a><span class="lineno">  740</span> </div>
<div class="line"><a id="l00741" name="l00741"></a><span class="lineno">  741</span>        <span class="keywordflow">if</span> (result == 0)</div>
<div class="line"><a id="l00742" name="l00742"></a><span class="lineno">  742</span>        {</div>
<div class="line"><a id="l00743" name="l00743"></a><span class="lineno">  743</span>            <a class="code hl_function" href="userboot_8c.html#acdd804b92809fcd58b2bc135fc74666c">jump_to_userboot</a>(<a class="code hl_define" href="userboot_8h.html#a734de0e7ed34780e74e947005d781741">EXEC_UPDATE</a>, <span class="keyword">false</span>); <span class="comment">//如果当前程序没有 UserBoot , 此句会破坏 APP .</span></div>
<div class="line"><a id="l00744" name="l00744"></a><span class="lineno">  744</span>        }</div>
<div class="line"><a id="l00745" name="l00745"></a><span class="lineno">  745</span>        <span class="keywordflow">return</span> (result == 0) ? 1 : result;<span class="comment">//即使成功执行完UB更新也不能让其进入主菜单页面, 因为需要重启以更新 APP .</span></div>
<div class="line"><a id="l00746" name="l00746"></a><span class="lineno">  746</span>    }</div>
<div class="line"><a id="l00747" name="l00747"></a><span class="lineno">  747</span>    <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00748" name="l00748"></a><span class="lineno">  748</span> </div>
<div class="line"><a id="l00749" name="l00749"></a><span class="lineno">  749</span>    <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00750" name="l00750"></a><span class="lineno">  750</span>        <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00751" name="l00751"></a><span class="lineno">  751</span>    }</div>
<div class="line"><a id="l00752" name="l00752"></a><span class="lineno">  752</span> </div>
<div class="line"><a id="l00753" name="l00753"></a><span class="lineno">  753</span>    <span class="comment">//校验本地文件</span></div>
<div class="line"><a id="l00754" name="l00754"></a><span class="lineno">  754</span>    result = <a class="code hl_function" href="file__table_8c.html#a3b8264ecd2971c7f1409a78c16a80fff">check_file_table</a>(<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>].disk, &amp;<a class="code hl_variable" href="file__table_8c.html#a210f9e081ee07b322afeec966766b06a">File_Table</a>, <a class="code hl_define" href="file__table_8h.html#ac8e6df38331152c1e09f9a43e6ab34a3">FT_MOVE_VIDEO</a> + 1, <a class="code hl_variable" href="file__table_8c.html#a210f9e081ee07b322afeec966766b06a">File_Table</a>.<a class="code hl_variable" href="structtable__class__t.html#a50759ab8147814e1075b574b51d12e64">table_size</a> - 1);</div>
<div class="line"><a id="l00755" name="l00755"></a><span class="lineno">  755</span>    <span class="keywordflow">if</span> (0 != result)</div>
<div class="line"><a id="l00756" name="l00756"></a><span class="lineno">  756</span>    {</div>
<div class="line"><a id="l00757" name="l00757"></a><span class="lineno">  757</span>        memset(msg_text, 0, <span class="keyword">sizeof</span>(msg_text));</div>
<div class="line"><a id="l00758" name="l00758"></a><span class="lineno">  758</span>        sprintf(msg_text, <span class="stringliteral">&quot;[%s] No File : [%s]&quot;</span>, <a class="code hl_variable" href="load__file_8c.html#a08687ba7285d01a737a269b697bb661c">VolumeStr</a>[<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>].disk], <a class="code hl_variable" href="file__table_8c.html#a210f9e081ee07b322afeec966766b06a">File_Table</a>.<a class="code hl_variable" href="structtable__class__t.html#a5be3dd4ebfa388f80036fee2ac2768f1">file</a>[result - 1].<a class="code hl_variable" href="structuser__file__t.html#a8f8f80d37794cde9472343e4487ba3eb">name</a>);</div>
<div class="line"><a id="l00759" name="l00759"></a><span class="lineno">  759</span>        <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *btn_text[2] = {<span class="stringliteral">&quot;Cancel&quot;</span>, <span class="stringliteral">&quot;&quot;</span>};</div>
<div class="line"><a id="l00760" name="l00760"></a><span class="lineno">  760</span>        <a class="code hl_function" href="ui__update_8c.html#af7291cda4b568af469eecf3fbf3a7094">msgbox_show</a>(msg_text, btn_text, <a class="code hl_variable" href="ui__update_8c.html#a06264759c9982089ba92c1d631969196">MsgBox_Wait_Ms</a>, NULL);</div>
<div class="line"><a id="l00761" name="l00761"></a><span class="lineno">  761</span>    }</div>
<div class="line"><a id="l00762" name="l00762"></a><span class="lineno">  762</span>    <span class="keywordflow">return</span> result;<span class="comment">//若仍然不符合正常启动的预期条件(本地素材完整), 则抛出错误, 由调用者完成返回文件列表页的动作</span></div>
<div class="line"><a id="l00763" name="l00763"></a><span class="lineno">  763</span>}</div>
<div class="line"><a id="l00764" name="l00764"></a><span class="lineno">  764</span> </div>
<div class="line"><a id="l00773" name="l00773"></a><span class="lineno"><a class="line" href="ui__update_8c.html#ad08f050acf50e741aaa931f61b7dc00f">  773</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="ui__update_8c.html#ad08f050acf50e741aaa931f61b7dc00f">list_btn_cb</a>(<a class="code hl_struct" href="structlist__dp__t.html">list_dp_t</a> *list_data, lv_obj_t *btn, lv_obj_t *list, lv_event_cb_t btn_cb)</div>
<div class="line"><a id="l00774" name="l00774"></a><span class="lineno">  774</span>{</div>
<div class="line"><a id="l00775" name="l00775"></a><span class="lineno">  775</span>    <span class="keyword">enum</span></div>
<div class="line"><a id="l00776" name="l00776"></a><span class="lineno">  776</span>    {</div>
<div class="line"><a id="l00777" name="l00777"></a><span class="lineno">  777</span>        DEFAULT = 0,</div>
<div class="line"><a id="l00778" name="l00778"></a><span class="lineno">  778</span>        DIR,</div>
<div class="line"><a id="l00779" name="l00779"></a><span class="lineno">  779</span>        FILE</div>
<div class="line"><a id="l00780" name="l00780"></a><span class="lineno">  780</span>    } obj_type = DEFAULT;</div>
<div class="line"><a id="l00781" name="l00781"></a><span class="lineno">  781</span> </div>
<div class="line"><a id="l00782" name="l00782"></a><span class="lineno">  782</span>    <span class="keyword">const</span> <span class="keywordtype">char</span> *btn_text = lv_list_get_btn_text(btn);</div>
<div class="line"><a id="l00783" name="l00783"></a><span class="lineno">  783</span>    <span class="keywordflow">if</span> (strncmp(btn_text, <a class="code hl_variable" href="ui__update_8c.html#abd8caa3698afa6b173633a32e0d36ec4">Back_Str</a>, strlen(<a class="code hl_variable" href="ui__update_8c.html#abd8caa3698afa6b173633a32e0d36ec4">Back_Str</a>) + 1) == 0) <span class="comment">//如果点击返回上级目录按钮，则把当前路径从最后一个&#39;/&#39;字符处截断</span></div>
<div class="line"><a id="l00784" name="l00784"></a><span class="lineno">  784</span>    {</div>
<div class="line"><a id="l00785" name="l00785"></a><span class="lineno">  785</span>        <span class="keywordtype">char</span> *ret = strrchr(list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#ab790c3badafe8a936877b3f795a12d99">path</a>, <a class="code hl_variable" href="ui__update_8c.html#a8146347161af60be85eba1ea595d94b4">Dir_Ch</a>);</div>
<div class="line"><a id="l00786" name="l00786"></a><span class="lineno">  786</span>        <span class="keywordflow">if</span> (ret != NULL) <span class="comment">//返回上一级目录有效</span></div>
<div class="line"><a id="l00787" name="l00787"></a><span class="lineno">  787</span>        {</div>
<div class="line"><a id="l00788" name="l00788"></a><span class="lineno">  788</span>            *ret = 0;</div>
<div class="line"><a id="l00789" name="l00789"></a><span class="lineno">  789</span>            obj_type = DIR;</div>
<div class="line"><a id="l00790" name="l00790"></a><span class="lineno">  790</span>        }</div>
<div class="line"><a id="l00791" name="l00791"></a><span class="lineno">  791</span>        <span class="keywordflow">else</span> <span class="comment">//当前已在根目录</span></div>
<div class="line"><a id="l00792" name="l00792"></a><span class="lineno">  792</span>        {</div>
<div class="line"><a id="l00793" name="l00793"></a><span class="lineno">  793</span>            <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00794" name="l00794"></a><span class="lineno">  794</span>        }</div>
<div class="line"><a id="l00795" name="l00795"></a><span class="lineno">  795</span>    }</div>
<div class="line"><a id="l00796" name="l00796"></a><span class="lineno">  796</span>    <span class="keywordflow">else</span></div>
<div class="line"><a id="l00797" name="l00797"></a><span class="lineno">  797</span>    {</div>
<div class="line"><a id="l00798" name="l00798"></a><span class="lineno">  798</span>        <span class="comment">//添加点击的目标路径</span></div>
<div class="line"><a id="l00799" name="l00799"></a><span class="lineno">  799</span>        sprintf(&amp;list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#ab790c3badafe8a936877b3f795a12d99">path</a>[strlen(list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#ab790c3badafe8a936877b3f795a12d99">path</a>)], <span class="stringliteral">&quot;/%s&quot;</span>, btn_text);</div>
<div class="line"><a id="l00800" name="l00800"></a><span class="lineno">  800</span>        <span class="keywordflow">if</span> (FR_OK == f_stat(list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#ab790c3badafe8a936877b3f795a12d99">path</a>, &amp;list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#adb2adf9b3f315041beb78852fa37a984">fno</a>))</div>
<div class="line"><a id="l00801" name="l00801"></a><span class="lineno">  801</span>        {</div>
<div class="line"><a id="l00802" name="l00802"></a><span class="lineno">  802</span>            obj_type = (list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#adb2adf9b3f315041beb78852fa37a984">fno</a>.fattrib &amp; AM_DIR) ? DIR : FILE;</div>
<div class="line"><a id="l00803" name="l00803"></a><span class="lineno">  803</span>        }</div>
<div class="line"><a id="l00804" name="l00804"></a><span class="lineno">  804</span>    }</div>
<div class="line"><a id="l00805" name="l00805"></a><span class="lineno">  805</span> </div>
<div class="line"><a id="l00806" name="l00806"></a><span class="lineno">  806</span>    <span class="keywordflow">switch</span> (obj_type)</div>
<div class="line"><a id="l00807" name="l00807"></a><span class="lineno">  807</span>    {</div>
<div class="line"><a id="l00808" name="l00808"></a><span class="lineno">  808</span>    <span class="keywordflow">case</span> (DIR):</div>
<div class="line"><a id="l00809" name="l00809"></a><span class="lineno">  809</span>        <span class="keywordflow">if</span> (FR_OK == f_closedir(&amp;list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#aa59fe1cb43760885aa78301453764fe0">dir</a>)) <span class="comment">//切换目录须提前关闭当前已打开目录, 避免出现泄漏</span></div>
<div class="line"><a id="l00810" name="l00810"></a><span class="lineno">  810</span>        {</div>
<div class="line"><a id="l00811" name="l00811"></a><span class="lineno">  811</span>            <a class="code hl_define" href="ui__update_8c.html#a4dd0246f2fafec4239a6404f01a15f47">UD_LOG</a>(<span class="stringliteral">&quot;[f_closedir] and [f_opendir] = [%s]\r\n&quot;</span>, list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#ab790c3badafe8a936877b3f795a12d99">path</a>);</div>
<div class="line"><a id="l00812" name="l00812"></a><span class="lineno">  812</span>            <span class="keywordflow">if</span> (FR_OK == f_opendir(&amp;list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#aa59fe1cb43760885aa78301453764fe0">dir</a>, list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#ab790c3badafe8a936877b3f795a12d99">path</a>))</div>
<div class="line"><a id="l00813" name="l00813"></a><span class="lineno">  813</span>            {</div>
<div class="line"><a id="l00814" name="l00814"></a><span class="lineno">  814</span>                <a class="code hl_function" href="ui__update_8c.html#affa34b514b9ff8d1f0d4e1f92df3f221">scan_dir_files</a>(list_data, <a class="code hl_variable" href="ui__update_8c.html#a5af441434574979c5408785942ab0ea8">List_File_Max_Num</a>, (list_data == &amp;<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>]) ? <a class="code hl_function" href="ui__update_8c.html#a69a8fdfac59efe32394ac287d886ad88">file_filter_move</a> : NULL, list, btn_cb);</div>
<div class="line"><a id="l00815" name="l00815"></a><span class="lineno">  815</span>            }</div>
<div class="line"><a id="l00816" name="l00816"></a><span class="lineno">  816</span>        }</div>
<div class="line"><a id="l00817" name="l00817"></a><span class="lineno">  817</span> </div>
<div class="line"><a id="l00818" name="l00818"></a><span class="lineno">  818</span>        <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00819" name="l00819"></a><span class="lineno">  819</span> </div>
<div class="line"><a id="l00820" name="l00820"></a><span class="lineno">  820</span>    <span class="keywordflow">case</span> (FILE):</div>
<div class="line"><a id="l00821" name="l00821"></a><span class="lineno">  821</span>        <span class="comment">/* 保持高亮显示, 并以单链记录 */</span></div>
<div class="line"><a id="l00822" name="l00822"></a><span class="lineno">  822</span>        <a class="code hl_define" href="ui__update_8c.html#a4dd0246f2fafec4239a6404f01a15f47">UD_LOG</a>(<span class="stringliteral">&quot;exec [%s] file\r\n&quot;</span>, list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#ab790c3badafe8a936877b3f795a12d99">path</a>);</div>
<div class="line"><a id="l00823" name="l00823"></a><span class="lineno">  823</span>        <span class="keywordflow">if</span> (list_data == &amp;<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>]) <span class="comment">//仅对外置存储生效</span></div>
<div class="line"><a id="l00824" name="l00824"></a><span class="lineno">  824</span>        {</div>
<div class="line"><a id="l00825" name="l00825"></a><span class="lineno">  825</span>            <span class="keywordtype">char</span> *node = NULL;</div>
<div class="line"><a id="l00826" name="l00826"></a><span class="lineno">  826</span>            <span class="keywordflow">for</span> (node = _lv_ll_get_head(&amp;<a class="code hl_variable" href="ui__update_8c.html#a527b235543e81472134d70bf86683ec7">LL_File</a>); node != NULL; node = _lv_ll_get_next(&amp;<a class="code hl_variable" href="ui__update_8c.html#a527b235543e81472134d70bf86683ec7">LL_File</a>, node))</div>
<div class="line"><a id="l00827" name="l00827"></a><span class="lineno">  827</span>            {</div>
<div class="line"><a id="l00828" name="l00828"></a><span class="lineno">  828</span>                <span class="keywordflow">if</span> (strcmp(node, list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#ab790c3badafe8a936877b3f795a12d99">path</a>) == 0) <span class="comment">//注意这里指针比较</span></div>
<div class="line"><a id="l00829" name="l00829"></a><span class="lineno">  829</span>                {</div>
<div class="line"><a id="l00830" name="l00830"></a><span class="lineno">  830</span>                    _lv_ll_remove(&amp;<a class="code hl_variable" href="ui__update_8c.html#a527b235543e81472134d70bf86683ec7">LL_File</a>, node);</div>
<div class="line"><a id="l00831" name="l00831"></a><span class="lineno">  831</span>                    <a class="code hl_define" href="ui__update_8c.html#a4dd0246f2fafec4239a6404f01a15f47">UD_LOG</a>(<span class="stringliteral">&quot;remove [%s] file\r\n&quot;</span>, list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#ab790c3badafe8a936877b3f795a12d99">path</a>);</div>
<div class="line"><a id="l00832" name="l00832"></a><span class="lineno">  832</span>                    <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00833" name="l00833"></a><span class="lineno">  833</span>                }</div>
<div class="line"><a id="l00834" name="l00834"></a><span class="lineno">  834</span>            }</div>
<div class="line"><a id="l00835" name="l00835"></a><span class="lineno">  835</span>            <span class="keywordflow">if</span> (node == NULL)</div>
<div class="line"><a id="l00836" name="l00836"></a><span class="lineno">  836</span>            {</div>
<div class="line"><a id="l00837" name="l00837"></a><span class="lineno">  837</span>                <span class="keywordtype">char</span> *ll_ptr = _lv_ll_ins_head(&amp;<a class="code hl_variable" href="ui__update_8c.html#a527b235543e81472134d70bf86683ec7">LL_File</a>);</div>
<div class="line"><a id="l00838" name="l00838"></a><span class="lineno">  838</span>                strcpy(ll_ptr, list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#ab790c3badafe8a936877b3f795a12d99">path</a>);</div>
<div class="line"><a id="l00839" name="l00839"></a><span class="lineno">  839</span>                <a class="code hl_define" href="ui__update_8c.html#a4dd0246f2fafec4239a6404f01a15f47">UD_LOG</a>(<span class="stringliteral">&quot;ins [%s] file\r\n&quot;</span>, list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#ab790c3badafe8a936877b3f795a12d99">path</a>);</div>
<div class="line"><a id="l00840" name="l00840"></a><span class="lineno">  840</span>            }</div>
<div class="line"><a id="l00841" name="l00841"></a><span class="lineno">  841</span>        }</div>
<div class="line"><a id="l00842" name="l00842"></a><span class="lineno">  842</span>        <span class="comment">//去掉当前最后的文件名, 回归 path 目录</span></div>
<div class="line"><a id="l00843" name="l00843"></a><span class="lineno">  843</span>        <span class="keywordtype">char</span> *ret = strrchr(list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#ab790c3badafe8a936877b3f795a12d99">path</a>, <a class="code hl_variable" href="ui__update_8c.html#a8146347161af60be85eba1ea595d94b4">Dir_Ch</a>);</div>
<div class="line"><a id="l00844" name="l00844"></a><span class="lineno">  844</span>        <span class="keywordflow">if</span> (ret != NULL)</div>
<div class="line"><a id="l00845" name="l00845"></a><span class="lineno">  845</span>        {</div>
<div class="line"><a id="l00846" name="l00846"></a><span class="lineno">  846</span>            *ret = 0;</div>
<div class="line"><a id="l00847" name="l00847"></a><span class="lineno">  847</span>        }</div>
<div class="line"><a id="l00848" name="l00848"></a><span class="lineno">  848</span>        <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00849" name="l00849"></a><span class="lineno">  849</span>    <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00850" name="l00850"></a><span class="lineno">  850</span>        <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00851" name="l00851"></a><span class="lineno">  851</span>    }</div>
<div class="line"><a id="l00852" name="l00852"></a><span class="lineno">  852</span>    <a class="code hl_define" href="ui__update_8c.html#a4dd0246f2fafec4239a6404f01a15f47">UD_LOG</a>(<span class="stringliteral">&quot;return path = [%s]\r\n&quot;</span>, list_data-&gt;<a class="code hl_variable" href="structlist__dp__t.html#ab790c3badafe8a936877b3f795a12d99">path</a>);</div>
<div class="line"><a id="l00853" name="l00853"></a><span class="lineno">  853</span>}</div>
<div class="line"><a id="l00854" name="l00854"></a><span class="lineno">  854</span> </div>
<div class="line"><a id="l00855" name="l00855"></a><span class="lineno">  855</span><span class="comment">//============================================== LVGL 控件事件与布局======================================================//</span></div>
<div class="line"><a id="l00862" name="l00862"></a><span class="lineno"><a class="line" href="ui__update_8c.html#ab134d9ef6a82138c238684cb0af31fde">  862</a></span><span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="ui__update_8c.html#ab134d9ef6a82138c238684cb0af31fde">dp_event_handler</a>(lv_obj_t *obj, lv_event_t event)</div>
<div class="line"><a id="l00863" name="l00863"></a><span class="lineno">  863</span>{</div>
<div class="line"><a id="l00864" name="l00864"></a><span class="lineno">  864</span>    <span class="keywordflow">if</span> (event == LV_EVENT_VALUE_CHANGED)</div>
<div class="line"><a id="l00865" name="l00865"></a><span class="lineno">  865</span>    {</div>
<div class="line"><a id="l00866" name="l00866"></a><span class="lineno">  866</span><span class="preprocessor">#if 1</span></div>
<div class="line"><a id="l00867" name="l00867"></a><span class="lineno">  867</span>        <span class="keywordtype">char</span> option_text[64];</div>
<div class="line"><a id="l00868" name="l00868"></a><span class="lineno">  868</span>        lv_dropdown_get_selected_str(obj, option_text, 0);</div>
<div class="line"><a id="l00869" name="l00869"></a><span class="lineno">  869</span> </div>
<div class="line"><a id="l00870" name="l00870"></a><span class="lineno">  870</span>        <span class="keywordflow">if</span> (strcmp(option_text, <a class="code hl_variable" href="ui__update_8c.html#a6b9762fb44e1c11b05dd4384e004ee16">Way_Text</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a438765e1f3129ec9a15a3750f85ba17c">WAY_SD</a>]) == 0)</div>
<div class="line"><a id="l00871" name="l00871"></a><span class="lineno">  871</span>            <a class="code hl_variable" href="ui__update_8c.html#af3e1747368f8a109619463c937c3f597">Select_Way</a> = <a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a438765e1f3129ec9a15a3750f85ba17c">WAY_SD</a>;</div>
<div class="line"><a id="l00872" name="l00872"></a><span class="lineno">  872</span>        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strcmp(option_text, <a class="code hl_variable" href="ui__update_8c.html#a6b9762fb44e1c11b05dd4384e004ee16">Way_Text</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a7da97547825333c89d5835511c00e334">WAY_USB_H</a>]) == 0)</div>
<div class="line"><a id="l00873" name="l00873"></a><span class="lineno">  873</span>            <a class="code hl_variable" href="ui__update_8c.html#af3e1747368f8a109619463c937c3f597">Select_Way</a> = <a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a7da97547825333c89d5835511c00e334">WAY_USB_H</a>;</div>
<div class="line"><a id="l00874" name="l00874"></a><span class="lineno">  874</span>        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strcmp(option_text, <a class="code hl_variable" href="ui__update_8c.html#a6b9762fb44e1c11b05dd4384e004ee16">Way_Text</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a94ed3d890336aa209cd2e7e9fa2ace11">WAY_USB_D</a>]) == 0)</div>
<div class="line"><a id="l00875" name="l00875"></a><span class="lineno">  875</span>            <a class="code hl_variable" href="ui__update_8c.html#af3e1747368f8a109619463c937c3f597">Select_Way</a> = <a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a94ed3d890336aa209cd2e7e9fa2ace11">WAY_USB_D</a>;</div>
<div class="line"><a id="l00876" name="l00876"></a><span class="lineno">  876</span> </div>
<div class="line"><a id="l00877" name="l00877"></a><span class="lineno">  877</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00878" name="l00878"></a><span class="lineno">  878</span>        <span class="keywordflow">switch</span> (lv_dropdown_get_selected(obj))</div>
<div class="line"><a id="l00879" name="l00879"></a><span class="lineno">  879</span>        {</div>
<div class="line"><a id="l00880" name="l00880"></a><span class="lineno">  880</span>        <span class="keywordflow">case</span> (<a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a438765e1f3129ec9a15a3750f85ba17c">WAY_SD</a>):</div>
<div class="line"><a id="l00881" name="l00881"></a><span class="lineno">  881</span>            <a class="code hl_variable" href="ui__update_8c.html#af3e1747368f8a109619463c937c3f597">Select_Way</a> = <a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a438765e1f3129ec9a15a3750f85ba17c">WAY_SD</a>;</div>
<div class="line"><a id="l00882" name="l00882"></a><span class="lineno">  882</span>            <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00883" name="l00883"></a><span class="lineno">  883</span> </div>
<div class="line"><a id="l00884" name="l00884"></a><span class="lineno">  884</span>        <span class="keywordflow">case</span> (<a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a7da97547825333c89d5835511c00e334">WAY_USB_H</a>):</div>
<div class="line"><a id="l00885" name="l00885"></a><span class="lineno">  885</span>            <a class="code hl_variable" href="ui__update_8c.html#af3e1747368f8a109619463c937c3f597">Select_Way</a> = <a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a7da97547825333c89d5835511c00e334">WAY_USB_H</a>;</div>
<div class="line"><a id="l00886" name="l00886"></a><span class="lineno">  886</span>            <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00887" name="l00887"></a><span class="lineno">  887</span> </div>
<div class="line"><a id="l00888" name="l00888"></a><span class="lineno">  888</span>        <span class="keywordflow">case</span> (<a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a94ed3d890336aa209cd2e7e9fa2ace11">WAY_USB_D</a>):</div>
<div class="line"><a id="l00889" name="l00889"></a><span class="lineno">  889</span>            <a class="code hl_variable" href="ui__update_8c.html#af3e1747368f8a109619463c937c3f597">Select_Way</a> = <a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a94ed3d890336aa209cd2e7e9fa2ace11">WAY_USB_D</a>;</div>
<div class="line"><a id="l00890" name="l00890"></a><span class="lineno">  890</span>            <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00891" name="l00891"></a><span class="lineno">  891</span> </div>
<div class="line"><a id="l00892" name="l00892"></a><span class="lineno">  892</span>        <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00893" name="l00893"></a><span class="lineno">  893</span>            <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00894" name="l00894"></a><span class="lineno">  894</span>        }</div>
<div class="line"><a id="l00895" name="l00895"></a><span class="lineno">  895</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00896" name="l00896"></a><span class="lineno">  896</span>        <span class="comment">//dp_select_way_cb(&amp;Select_Way);</span></div>
<div class="line"><a id="l00897" name="l00897"></a><span class="lineno">  897</span>    }</div>
<div class="line"><a id="l00898" name="l00898"></a><span class="lineno">  898</span>}</div>
<div class="line"><a id="l00899" name="l00899"></a><span class="lineno">  899</span> </div>
<div class="line"><a id="l00906" name="l00906"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a797b333b12a40decb2c24f829053576e">  906</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="ui__update_8c.html#a797b333b12a40decb2c24f829053576e">btn_event_handler</a>(lv_obj_t *obj, lv_event_t event)</div>
<div class="line"><a id="l00907" name="l00907"></a><span class="lineno">  907</span>{</div>
<div class="line"><a id="l00908" name="l00908"></a><span class="lineno">  908</span>    <span class="keywordflow">if</span> (event == LV_EVENT_RELEASED)</div>
<div class="line"><a id="l00909" name="l00909"></a><span class="lineno">  909</span>    {</div>
<div class="line"><a id="l00910" name="l00910"></a><span class="lineno">  910</span>        <span class="keywordflow">for</span> (uint32_t i = 0; i &lt; <a class="code hl_enumvalue" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0a5a286a5118e9f16961d315021d46d3b3">_BTN_MAX_</a>; ++i)</div>
<div class="line"><a id="l00911" name="l00911"></a><span class="lineno">  911</span>        {</div>
<div class="line"><a id="l00912" name="l00912"></a><span class="lineno">  912</span>            <span class="keywordflow">if</span> (obj == <a class="code hl_variable" href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">UI</a>.<a class="code hl_variable" href="structlv__ui.html#a3724878ba8252fb12748f13ac00db976">btn</a>[i])</div>
<div class="line"><a id="l00913" name="l00913"></a><span class="lineno">  913</span>            {</div>
<div class="line"><a id="l00914" name="l00914"></a><span class="lineno">  914</span>                <a class="code hl_variable" href="ui__update_8c.html#a50ade5308cd9daf421ac0c8a6f6c1f82">File_Explorer_Flag</a> = i;</div>
<div class="line"><a id="l00915" name="l00915"></a><span class="lineno">  915</span>                <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00916" name="l00916"></a><span class="lineno">  916</span>            }</div>
<div class="line"><a id="l00917" name="l00917"></a><span class="lineno">  917</span>        }</div>
<div class="line"><a id="l00918" name="l00918"></a><span class="lineno">  918</span>    }</div>
<div class="line"><a id="l00919" name="l00919"></a><span class="lineno">  919</span>}</div>
<div class="line"><a id="l00920" name="l00920"></a><span class="lineno">  920</span> </div>
<div class="line"><a id="l00927" name="l00927"></a><span class="lineno"><a class="line" href="ui__update_8c.html#abed58d04a30c85fb2231dace9f928c23">  927</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="ui__update_8c.html#abed58d04a30c85fb2231dace9f928c23">list_btn_event_handler</a>(lv_obj_t *obj, lv_event_t event)</div>
<div class="line"><a id="l00928" name="l00928"></a><span class="lineno">  928</span>{</div>
<div class="line"><a id="l00929" name="l00929"></a><span class="lineno">  929</span>    <span class="keywordflow">if</span> (event == LV_EVENT_VALUE_CHANGED) <span class="comment">// LV_EVENT_RELEASED \ LV_EVENT_CLICKED</span></div>
<div class="line"><a id="l00930" name="l00930"></a><span class="lineno">  930</span>    {</div>
<div class="line"><a id="l00931" name="l00931"></a><span class="lineno">  931</span>        <span class="keywordflow">if</span> (lv_list_get_btn_index(<a class="code hl_variable" href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">UI</a>.<a class="code hl_variable" href="structlv__ui.html#a63436e3c484508c05333317adfd3bdcb">list</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>], obj) != -1)</div>
<div class="line"><a id="l00932" name="l00932"></a><span class="lineno">  932</span>        {</div>
<div class="line"><a id="l00933" name="l00933"></a><span class="lineno">  933</span>            <a class="code hl_function" href="ui__update_8c.html#ad08f050acf50e741aaa931f61b7dc00f">list_btn_cb</a>(&amp;<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>], obj, <a class="code hl_variable" href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">UI</a>.<a class="code hl_variable" href="structlv__ui.html#a63436e3c484508c05333317adfd3bdcb">list</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>], <a class="code hl_function" href="ui__update_8c.html#abed58d04a30c85fb2231dace9f928c23">list_btn_event_handler</a>);</div>
<div class="line"><a id="l00934" name="l00934"></a><span class="lineno">  934</span>            <span class="comment">//标题栏显示当前路径</span></div>
<div class="line"><a id="l00935" name="l00935"></a><span class="lineno">  935</span>            lv_label_set_text(<a class="code hl_variable" href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">UI</a>.<a class="code hl_variable" href="structlv__ui.html#acc037b4a511f3f67178aac07b1f0200a">list_label</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>], <a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>].<a class="code hl_variable" href="structlist__dp__t.html#ab790c3badafe8a936877b3f795a12d99">path</a>);</div>
<div class="line"><a id="l00936" name="l00936"></a><span class="lineno">  936</span>        }</div>
<div class="line"><a id="l00937" name="l00937"></a><span class="lineno">  937</span>        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lv_list_get_btn_index(<a class="code hl_variable" href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">UI</a>.<a class="code hl_variable" href="structlv__ui.html#a63436e3c484508c05333317adfd3bdcb">list</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>], obj) != -1)</div>
<div class="line"><a id="l00938" name="l00938"></a><span class="lineno">  938</span>        {</div>
<div class="line"><a id="l00939" name="l00939"></a><span class="lineno">  939</span>            <a class="code hl_function" href="ui__update_8c.html#ad08f050acf50e741aaa931f61b7dc00f">list_btn_cb</a>(&amp;<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>], obj, <a class="code hl_variable" href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">UI</a>.<a class="code hl_variable" href="structlv__ui.html#a63436e3c484508c05333317adfd3bdcb">list</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>], <a class="code hl_function" href="ui__update_8c.html#abed58d04a30c85fb2231dace9f928c23">list_btn_event_handler</a>);</div>
<div class="line"><a id="l00940" name="l00940"></a><span class="lineno">  940</span>            <span class="comment">//标题栏显示当前路径</span></div>
<div class="line"><a id="l00941" name="l00941"></a><span class="lineno">  941</span>            lv_label_set_text(<a class="code hl_variable" href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">UI</a>.<a class="code hl_variable" href="structlv__ui.html#acc037b4a511f3f67178aac07b1f0200a">list_label</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>], <a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>].<a class="code hl_variable" href="structlist__dp__t.html#ab790c3badafe8a936877b3f795a12d99">path</a>);</div>
<div class="line"><a id="l00942" name="l00942"></a><span class="lineno">  942</span>        }</div>
<div class="line"><a id="l00943" name="l00943"></a><span class="lineno">  943</span>    }</div>
<div class="line"><a id="l00944" name="l00944"></a><span class="lineno">  944</span>}</div>
<div class="line"><a id="l00945" name="l00945"></a><span class="lineno">  945</span> </div>
<div class="line"><a id="l00953" name="l00953"></a><span class="lineno"><a class="line" href="ui__update_8c.html#aca1c2b29944838c9ab089bc024f238dc">  953</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="ui__update_8c.html#aca1c2b29944838c9ab089bc024f238dc">list_btn_next_event_handler</a>(lv_obj_t *obj, lv_event_t event)</div>
<div class="line"><a id="l00954" name="l00954"></a><span class="lineno">  954</span>{</div>
<div class="line"><a id="l00955" name="l00955"></a><span class="lineno">  955</span>    <span class="keywordflow">if</span> (event == LV_EVENT_RELEASED)</div>
<div class="line"><a id="l00956" name="l00956"></a><span class="lineno">  956</span>    {</div>
<div class="line"><a id="l00957" name="l00957"></a><span class="lineno">  957</span>        <span class="keywordflow">if</span> (obj == <a class="code hl_variable" href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">UI</a>.<a class="code hl_variable" href="structlv__ui.html#aa3cd6e3ccdf1a0a2bce3e70fd56088d8">list_btn_next</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>])</div>
<div class="line"><a id="l00958" name="l00958"></a><span class="lineno">  958</span>        {</div>
<div class="line"><a id="l00959" name="l00959"></a><span class="lineno">  959</span>            <a class="code hl_function" href="ui__update_8c.html#affa34b514b9ff8d1f0d4e1f92df3f221">scan_dir_files</a>(&amp;<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>], <a class="code hl_variable" href="ui__update_8c.html#a5af441434574979c5408785942ab0ea8">List_File_Max_Num</a>, <a class="code hl_function" href="ui__update_8c.html#a69a8fdfac59efe32394ac287d886ad88">file_filter_move</a>, <a class="code hl_variable" href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">UI</a>.<a class="code hl_variable" href="structlv__ui.html#a63436e3c484508c05333317adfd3bdcb">list</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a>], <a class="code hl_function" href="ui__update_8c.html#abed58d04a30c85fb2231dace9f928c23">list_btn_event_handler</a>);</div>
<div class="line"><a id="l00960" name="l00960"></a><span class="lineno">  960</span>        }</div>
<div class="line"><a id="l00961" name="l00961"></a><span class="lineno">  961</span>        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (obj == <a class="code hl_variable" href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">UI</a>.<a class="code hl_variable" href="structlv__ui.html#aa3cd6e3ccdf1a0a2bce3e70fd56088d8">list_btn_next</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>])</div>
<div class="line"><a id="l00962" name="l00962"></a><span class="lineno">  962</span>        {</div>
<div class="line"><a id="l00963" name="l00963"></a><span class="lineno">  963</span>            <a class="code hl_function" href="ui__update_8c.html#affa34b514b9ff8d1f0d4e1f92df3f221">scan_dir_files</a>(&amp;<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>], <a class="code hl_variable" href="ui__update_8c.html#a5af441434574979c5408785942ab0ea8">List_File_Max_Num</a>, NULL, <a class="code hl_variable" href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">UI</a>.<a class="code hl_variable" href="structlv__ui.html#a63436e3c484508c05333317adfd3bdcb">list</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a>], <a class="code hl_function" href="ui__update_8c.html#abed58d04a30c85fb2231dace9f928c23">list_btn_event_handler</a>);</div>
<div class="line"><a id="l00964" name="l00964"></a><span class="lineno">  964</span>        }</div>
<div class="line"><a id="l00965" name="l00965"></a><span class="lineno">  965</span>    }</div>
<div class="line"><a id="l00966" name="l00966"></a><span class="lineno">  966</span>}</div>
<div class="line"><a id="l00967" name="l00967"></a><span class="lineno">  967</span> </div>
<div class="line"><a id="l00973" name="l00973"></a><span class="lineno"><a class="line" href="ui__update_8c.html#abdb62d45c4cace1544f52cdacda45f24">  973</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="ui__update_8c.html#abdb62d45c4cace1544f52cdacda45f24">events_init</a>(<a class="code hl_struct" href="structlv__ui.html">lv_ui</a> *ui)</div>
<div class="line"><a id="l00974" name="l00974"></a><span class="lineno">  974</span>{</div>
<div class="line"><a id="l00975" name="l00975"></a><span class="lineno">  975</span>    lv_obj_set_event_cb(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a6bc13c5836684fe7a05318caa6b9faa9">dp</a>, <a class="code hl_function" href="ui__update_8c.html#ab134d9ef6a82138c238684cb0af31fde">dp_event_handler</a>);</div>
<div class="line"><a id="l00976" name="l00976"></a><span class="lineno">  976</span> </div>
<div class="line"><a id="l00977" name="l00977"></a><span class="lineno">  977</span>    <span class="keywordflow">for</span> (uint8_t i = 0; i &lt; <a class="code hl_enumvalue" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0a5a286a5118e9f16961d315021d46d3b3">_BTN_MAX_</a>; ++i)</div>
<div class="line"><a id="l00978" name="l00978"></a><span class="lineno">  978</span>    {</div>
<div class="line"><a id="l00979" name="l00979"></a><span class="lineno">  979</span>        lv_obj_set_event_cb(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a3724878ba8252fb12748f13ac00db976">btn</a>[i], <a class="code hl_function" href="ui__update_8c.html#a797b333b12a40decb2c24f829053576e">btn_event_handler</a>);</div>
<div class="line"><a id="l00980" name="l00980"></a><span class="lineno">  980</span>    }</div>
<div class="line"><a id="l00981" name="l00981"></a><span class="lineno">  981</span> </div>
<div class="line"><a id="l00982" name="l00982"></a><span class="lineno">  982</span>    <span class="keywordflow">for</span> (uint8_t i = 0; i &lt; <a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61aa7dadc373d1293a6252806d1c1219d6a">_LIST_MAX_</a>; ++i)</div>
<div class="line"><a id="l00983" name="l00983"></a><span class="lineno">  983</span>    {</div>
<div class="line"><a id="l00984" name="l00984"></a><span class="lineno">  984</span>        lv_obj_set_event_cb(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#aa3cd6e3ccdf1a0a2bce3e70fd56088d8">list_btn_next</a>[i], <a class="code hl_function" href="ui__update_8c.html#aca1c2b29944838c9ab089bc024f238dc">list_btn_next_event_handler</a>);</div>
<div class="line"><a id="l00985" name="l00985"></a><span class="lineno">  985</span>    }</div>
<div class="line"><a id="l00986" name="l00986"></a><span class="lineno">  986</span>}</div>
<div class="line"><a id="l00987" name="l00987"></a><span class="lineno">  987</span> </div>
<div class="line"><a id="l00993" name="l00993"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a106a57df6249072c630361740348469e">  993</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="ui__update_8c.html#a106a57df6249072c630361740348469e">clean_scr_page</a>(<a class="code hl_struct" href="structlv__ui.html">lv_ui</a> *ui)</div>
<div class="line"><a id="l00994" name="l00994"></a><span class="lineno">  994</span>{</div>
<div class="line"><a id="l00995" name="l00995"></a><span class="lineno">  995</span>    lv_obj_del(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#aab0990bea6532e3c3d13fdf497ac6a7d">obj_bg</a>);</div>
<div class="line"><a id="l00996" name="l00996"></a><span class="lineno">  996</span>    ui-&gt;<a class="code hl_variable" href="structlv__ui.html#aab0990bea6532e3c3d13fdf497ac6a7d">obj_bg</a> = NULL;</div>
<div class="line"><a id="l00997" name="l00997"></a><span class="lineno">  997</span>}</div>
<div class="line"><a id="l00998" name="l00998"></a><span class="lineno">  998</span> </div>
<div class="line"><a id="l01004" name="l01004"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a0914c8a5cdee556dcabd181982c81260"> 1004</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="ui__update_8c.html#a0914c8a5cdee556dcabd181982c81260">setup_scr_page</a>(<a class="code hl_struct" href="structlv__ui.html">lv_ui</a> *ui)</div>
<div class="line"><a id="l01005" name="l01005"></a><span class="lineno"> 1005</span>{</div>
<div class="line"><a id="l01006" name="l01006"></a><span class="lineno"> 1006</span>    <span class="comment">//独立按钮的字体颜色</span></div>
<div class="line"><a id="l01007" name="l01007"></a><span class="lineno"> 1007</span>    <span class="keyword">const</span> lv_color_t color_btn_text[<a class="code hl_enumvalue" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0a5a286a5118e9f16961d315021d46d3b3">_BTN_MAX_</a>] = {LV_COLOR_RED, LV_COLOR_GREEN, LV_COLOR_BLUE};</div>
<div class="line"><a id="l01008" name="l01008"></a><span class="lineno"> 1008</span>    uint8_t i = 0;</div>
<div class="line"><a id="l01009" name="l01009"></a><span class="lineno"> 1009</span> </div>
<div class="line"><a id="l01010" name="l01010"></a><span class="lineno"> 1010</span>    <span class="comment">// Write codes cont_bg</span></div>
<div class="line"><a id="l01011" name="l01011"></a><span class="lineno"> 1011</span>    ui-&gt;<a class="code hl_variable" href="structlv__ui.html#aab0990bea6532e3c3d13fdf497ac6a7d">obj_bg</a> = lv_obj_create(lv_scr_act(), NULL);</div>
<div class="line"><a id="l01012" name="l01012"></a><span class="lineno"> 1012</span>    lv_obj_set_pos(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#aab0990bea6532e3c3d13fdf497ac6a7d">obj_bg</a>, 0, 0);</div>
<div class="line"><a id="l01013" name="l01013"></a><span class="lineno"> 1013</span>    lv_obj_set_size(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#aab0990bea6532e3c3d13fdf497ac6a7d">obj_bg</a>, LV_HOR_RES_MAX, LV_VER_RES_MAX);</div>
<div class="line"><a id="l01014" name="l01014"></a><span class="lineno"> 1014</span>    lv_obj_set_click(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#aab0990bea6532e3c3d13fdf497ac6a7d">obj_bg</a>, <span class="keyword">false</span>);</div>
<div class="line"><a id="l01015" name="l01015"></a><span class="lineno"> 1015</span>    lv_obj_set_style_local_bg_color(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#aab0990bea6532e3c3d13fdf497ac6a7d">obj_bg</a>, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_WHITE); <span class="comment">//白色背景</span></div>
<div class="line"><a id="l01016" name="l01016"></a><span class="lineno"> 1016</span> </div>
<div class="line"><a id="l01017" name="l01017"></a><span class="lineno"> 1017</span>    <span class="comment">//--------------------------------------------------Cont--------------------------------------------------//</span></div>
<div class="line"><a id="l01018" name="l01018"></a><span class="lineno"> 1018</span>    <span class="comment">// Write codes Cont</span></div>
<div class="line"><a id="l01019" name="l01019"></a><span class="lineno"> 1019</span>    ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a797f71be78f3620e700c217a7b569bfc">cont_left</a> = lv_cont_create(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#aab0990bea6532e3c3d13fdf497ac6a7d">obj_bg</a>, NULL);</div>
<div class="line"><a id="l01020" name="l01020"></a><span class="lineno"> 1020</span>    lv_obj_set_pos(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a797f71be78f3620e700c217a7b569bfc">cont_left</a>, 0, 0);</div>
<div class="line"><a id="l01021" name="l01021"></a><span class="lineno"> 1021</span>    lv_obj_set_size(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a797f71be78f3620e700c217a7b569bfc">cont_left</a>, LV_HOR_RES_MAX / 3, LV_VER_RES_MAX);</div>
<div class="line"><a id="l01022" name="l01022"></a><span class="lineno"> 1022</span>    lv_cont_set_fit(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a797f71be78f3620e700c217a7b569bfc">cont_left</a>, LV_FIT_NONE);</div>
<div class="line"><a id="l01023" name="l01023"></a><span class="lineno"> 1023</span>    lv_cont_set_layout(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a797f71be78f3620e700c217a7b569bfc">cont_left</a>, LV_LAYOUT_CENTER);                                                  <span class="comment">//将子项与列中的中心对齐, 并在它们之间保持间距</span></div>
<div class="line"><a id="l01024" name="l01024"></a><span class="lineno"> 1024</span>    lv_obj_set_style_local_border_opa(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a797f71be78f3620e700c217a7b569bfc">cont_left</a>, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_TRANSP); <span class="comment">//纯透明</span></div>
<div class="line"><a id="l01025" name="l01025"></a><span class="lineno"> 1025</span>    lv_obj_set_style_local_outline_opa(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a797f71be78f3620e700c217a7b569bfc">cont_left</a>, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_TRANSP);</div>
<div class="line"><a id="l01026" name="l01026"></a><span class="lineno"> 1026</span> </div>
<div class="line"><a id="l01027" name="l01027"></a><span class="lineno"> 1027</span>    <span class="comment">//平均分为 3 份( 1 : 2 )</span></div>
<div class="line"><a id="l01028" name="l01028"></a><span class="lineno"> 1028</span>    ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a575ff5085e47401c37a8fdead5c28cb2">cont_right</a> = lv_cont_create(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#aab0990bea6532e3c3d13fdf497ac6a7d">obj_bg</a>, NULL);</div>
<div class="line"><a id="l01029" name="l01029"></a><span class="lineno"> 1029</span>    lv_obj_set_pos(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a575ff5085e47401c37a8fdead5c28cb2">cont_right</a>, LV_HOR_RES_MAX / 3, 0);</div>
<div class="line"><a id="l01030" name="l01030"></a><span class="lineno"> 1030</span>    lv_obj_set_size(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a575ff5085e47401c37a8fdead5c28cb2">cont_right</a>, LV_HOR_RES_MAX / 3 * 2, LV_VER_RES_MAX);</div>
<div class="line"><a id="l01031" name="l01031"></a><span class="lineno"> 1031</span>    lv_cont_set_fit(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a575ff5085e47401c37a8fdead5c28cb2">cont_right</a>, LV_FIT_NONE);</div>
<div class="line"><a id="l01032" name="l01032"></a><span class="lineno"> 1032</span>    lv_cont_set_layout(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a575ff5085e47401c37a8fdead5c28cb2">cont_right</a>, LV_LAYOUT_OFF);</div>
<div class="line"><a id="l01033" name="l01033"></a><span class="lineno"> 1033</span>    lv_obj_set_style_local_border_opa(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a575ff5085e47401c37a8fdead5c28cb2">cont_right</a>, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_TRANSP); <span class="comment">//纯透明</span></div>
<div class="line"><a id="l01034" name="l01034"></a><span class="lineno"> 1034</span>    lv_obj_set_style_local_outline_opa(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a575ff5085e47401c37a8fdead5c28cb2">cont_right</a>, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_TRANSP);</div>
<div class="line"><a id="l01035" name="l01035"></a><span class="lineno"> 1035</span> </div>
<div class="line"><a id="l01036" name="l01036"></a><span class="lineno"> 1036</span>    <span class="comment">//--------------------------------------------------Left--------------------------------------------------//</span></div>
<div class="line"><a id="l01037" name="l01037"></a><span class="lineno"> 1037</span>    <span class="comment">// Write codes dp</span></div>
<div class="line"><a id="l01038" name="l01038"></a><span class="lineno"> 1038</span>    ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a6bc13c5836684fe7a05318caa6b9faa9">dp</a> = lv_dropdown_create(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#aab0990bea6532e3c3d13fdf497ac6a7d">obj_bg</a>, NULL);</div>
<div class="line"><a id="l01039" name="l01039"></a><span class="lineno"> 1039</span>    lv_dropdown_set_dir(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a6bc13c5836684fe7a05318caa6b9faa9">dp</a>, LV_DROPDOWN_DIR_DOWN); <span class="comment">// LV_DROPDOWN_DIR_ /LEFT/RIGHT/UP/DOWN</span></div>
<div class="line"><a id="l01040" name="l01040"></a><span class="lineno"> 1040</span>    lv_obj_set_width(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a6bc13c5836684fe7a05318caa6b9faa9">dp</a>, lv_obj_get_width(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a797f71be78f3620e700c217a7b569bfc">cont_left</a>) / 2);</div>
<div class="line"><a id="l01041" name="l01041"></a><span class="lineno"> 1041</span>    lv_obj_align(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a6bc13c5836684fe7a05318caa6b9faa9">dp</a>, ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a797f71be78f3620e700c217a7b569bfc">cont_left</a>, LV_ALIGN_IN_TOP_MID, 0, 0);</div>
<div class="line"><a id="l01042" name="l01042"></a><span class="lineno"> 1042</span> </div>
<div class="line"><a id="l01043" name="l01043"></a><span class="lineno"> 1043</span>    <span class="comment">/* 设定下拉文本*/</span></div>
<div class="line"><a id="l01044" name="l01044"></a><span class="lineno"> 1044</span>    <span class="keywordtype">char</span> option_text[64];</div>
<div class="line"><a id="l01045" name="l01045"></a><span class="lineno"> 1045</span> </div>
<div class="line"><a id="l01046" name="l01046"></a><span class="lineno"> 1046</span><span class="preprocessor">#if (SWM34S_LCM_PCBV == SWM34SCE_PIN48_A2)</span></div>
<div class="line"><a id="l01047" name="l01047"></a><span class="lineno"> 1047</span>    sprintf(option_text, <span class="stringliteral">&quot;%s\n%s&quot;</span>, <a class="code hl_variable" href="ui__update_8c.html#a6b9762fb44e1c11b05dd4384e004ee16">Way_Text</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a7da97547825333c89d5835511c00e334">WAY_USB_H</a>], <a class="code hl_variable" href="ui__update_8c.html#a6b9762fb44e1c11b05dd4384e004ee16">Way_Text</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a94ed3d890336aa209cd2e7e9fa2ace11">WAY_USB_D</a>]);</div>
<div class="line"><a id="l01048" name="l01048"></a><span class="lineno"> 1048</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l01049" name="l01049"></a><span class="lineno"> 1049</span>    sprintf(option_text, <span class="stringliteral">&quot;%s\n%s\n%s&quot;</span>, <a class="code hl_variable" href="ui__update_8c.html#a6b9762fb44e1c11b05dd4384e004ee16">Way_Text</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a438765e1f3129ec9a15a3750f85ba17c">WAY_SD</a>], <a class="code hl_variable" href="ui__update_8c.html#a6b9762fb44e1c11b05dd4384e004ee16">Way_Text</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a7da97547825333c89d5835511c00e334">WAY_USB_H</a>], <a class="code hl_variable" href="ui__update_8c.html#a6b9762fb44e1c11b05dd4384e004ee16">Way_Text</a>[<a class="code hl_enumvalue" href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a94ed3d890336aa209cd2e7e9fa2ace11">WAY_USB_D</a>]);</div>
<div class="line"><a id="l01050" name="l01050"></a><span class="lineno"> 1050</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l01051" name="l01051"></a><span class="lineno"> 1051</span>    lv_dropdown_set_options(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a6bc13c5836684fe7a05318caa6b9faa9">dp</a>, option_text);</div>
<div class="line"><a id="l01052" name="l01052"></a><span class="lineno"> 1052</span> </div>
<div class="line"><a id="l01053" name="l01053"></a><span class="lineno"> 1053</span>    <span class="comment">/*</span></div>
<div class="line"><a id="l01054" name="l01054"></a><span class="lineno"> 1054</span><span class="comment">    lv_dropdown_set_options(ui-&gt;dp, &quot;&quot;);</span></div>
<div class="line"><a id="l01055" name="l01055"></a><span class="lineno"> 1055</span><span class="comment">    for (i = 0; i &lt; _WAY_MAX_; ++i)</span></div>
<div class="line"><a id="l01056" name="l01056"></a><span class="lineno"> 1056</span><span class="comment">    {</span></div>
<div class="line"><a id="l01057" name="l01057"></a><span class="lineno"> 1057</span><span class="comment">        lv_dropdown_add_option(ui-&gt;dp, Way_Text[i], i);</span></div>
<div class="line"><a id="l01058" name="l01058"></a><span class="lineno"> 1058</span><span class="comment">    }</span></div>
<div class="line"><a id="l01059" name="l01059"></a><span class="lineno"> 1059</span><span class="comment">    lv_dropdown_add_option(ui-&gt;dp, &quot;\0&quot;, i);</span></div>
<div class="line"><a id="l01060" name="l01060"></a><span class="lineno"> 1060</span><span class="comment">    */</span></div>
<div class="line"><a id="l01061" name="l01061"></a><span class="lineno"> 1061</span> </div>
<div class="line"><a id="l01062" name="l01062"></a><span class="lineno"> 1062</span>    <span class="comment">// Write codes label_notes</span></div>
<div class="line"><a id="l01063" name="l01063"></a><span class="lineno"> 1063</span>    ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad6ed790d22701e3f18bc9e56076d37be">label_notes</a> = lv_label_create(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a797f71be78f3620e700c217a7b569bfc">cont_left</a>, NULL);</div>
<div class="line"><a id="l01064" name="l01064"></a><span class="lineno"> 1064</span>    lv_label_set_long_mode(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad6ed790d22701e3f18bc9e56076d37be">label_notes</a>, LV_LABEL_LONG_BREAK); <span class="comment">// LV_LABEL_LONG_SROLL_CIRC - 滚动效果太卡(慎用)</span></div>
<div class="line"><a id="l01065" name="l01065"></a><span class="lineno"> 1065</span>    lv_obj_set_width(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad6ed790d22701e3f18bc9e56076d37be">label_notes</a>, lv_obj_get_width(lv_obj_get_parent(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad6ed790d22701e3f18bc9e56076d37be">label_notes</a>)));</div>
<div class="line"><a id="l01066" name="l01066"></a><span class="lineno"> 1066</span>    lv_obj_set_height(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad6ed790d22701e3f18bc9e56076d37be">label_notes</a>, lv_obj_get_height(lv_obj_get_parent(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad6ed790d22701e3f18bc9e56076d37be">label_notes</a>)) / 4);</div>
<div class="line"><a id="l01067" name="l01067"></a><span class="lineno"> 1067</span>    lv_label_set_align(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad6ed790d22701e3f18bc9e56076d37be">label_notes</a>, LV_LABEL_ALIGN_CENTER);</div>
<div class="line"><a id="l01068" name="l01068"></a><span class="lineno"> 1068</span>    lv_obj_set_style_local_outline_color(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad6ed790d22701e3f18bc9e56076d37be">label_notes</a>, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_RED);</div>
<div class="line"><a id="l01069" name="l01069"></a><span class="lineno"> 1069</span>    lv_obj_set_style_local_border_color(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad6ed790d22701e3f18bc9e56076d37be">label_notes</a>, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_RED);</div>
<div class="line"><a id="l01070" name="l01070"></a><span class="lineno"> 1070</span>    lv_obj_set_style_local_text_color(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad6ed790d22701e3f18bc9e56076d37be">label_notes</a>, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_RED);</div>
<div class="line"><a id="l01071" name="l01071"></a><span class="lineno"> 1071</span>    lv_obj_set_style_local_text_font(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad6ed790d22701e3f18bc9e56076d37be">label_notes</a>, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &amp;<a class="code hl_define" href="ui__update_8c.html#aff351d118cacf27e50b7172b5fe7cc6d">LV_FONT_AUTO_SIZE</a>);</div>
<div class="line"><a id="l01072" name="l01072"></a><span class="lineno"> 1072</span>    lv_label_set_text(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad6ed790d22701e3f18bc9e56076d37be">label_notes</a>, <a class="code hl_variable" href="ui__update_8c.html#a58399acf1b4e32d79c4971de38e1dc42">Guidance_Notes</a>);</div>
<div class="line"><a id="l01073" name="l01073"></a><span class="lineno"> 1073</span> </div>
<div class="line"><a id="l01074" name="l01074"></a><span class="lineno"> 1074</span>    <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code hl_enumvalue" href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0a5a286a5118e9f16961d315021d46d3b3">_BTN_MAX_</a>; ++i)</div>
<div class="line"><a id="l01075" name="l01075"></a><span class="lineno"> 1075</span>    {</div>
<div class="line"><a id="l01076" name="l01076"></a><span class="lineno"> 1076</span>        <span class="comment">// Write codes btn[i]</span></div>
<div class="line"><a id="l01077" name="l01077"></a><span class="lineno"> 1077</span>        ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a3724878ba8252fb12748f13ac00db976">btn</a>[i] = lv_btn_create(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a797f71be78f3620e700c217a7b569bfc">cont_left</a>, NULL);</div>
<div class="line"><a id="l01078" name="l01078"></a><span class="lineno"> 1078</span>        lv_obj_set_size(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a3724878ba8252fb12748f13ac00db976">btn</a>[i],</div>
<div class="line"><a id="l01079" name="l01079"></a><span class="lineno"> 1079</span>                        lv_obj_get_width(lv_obj_get_parent(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a3724878ba8252fb12748f13ac00db976">btn</a>[i])) / 2,</div>
<div class="line"><a id="l01080" name="l01080"></a><span class="lineno"> 1080</span>                        lv_obj_get_height(lv_obj_get_parent(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a3724878ba8252fb12748f13ac00db976">btn</a>[i])) / 8);</div>
<div class="line"><a id="l01081" name="l01081"></a><span class="lineno"> 1081</span> </div>
<div class="line"><a id="l01082" name="l01082"></a><span class="lineno"> 1082</span>        <span class="comment">// Write codes btn_label[i]</span></div>
<div class="line"><a id="l01083" name="l01083"></a><span class="lineno"> 1083</span>        ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a92fa52d98216f7072c6b45c036d23005">btn_label</a>[i] = lv_label_create(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a3724878ba8252fb12748f13ac00db976">btn</a>[i], NULL);</div>
<div class="line"><a id="l01084" name="l01084"></a><span class="lineno"> 1084</span>        lv_obj_align(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a92fa52d98216f7072c6b45c036d23005">btn_label</a>[i], NULL, LV_ALIGN_CENTER, 0, 0);</div>
<div class="line"><a id="l01085" name="l01085"></a><span class="lineno"> 1085</span>        lv_label_set_align(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a92fa52d98216f7072c6b45c036d23005">btn_label</a>[i], LV_LABEL_ALIGN_CENTER);</div>
<div class="line"><a id="l01086" name="l01086"></a><span class="lineno"> 1086</span>        lv_label_set_text(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a92fa52d98216f7072c6b45c036d23005">btn_label</a>[i], <a class="code hl_variable" href="ui__update_8c.html#a4ffa04991f0097ff752c1938c60dc6f0">Btn_Text</a>[i]);</div>
<div class="line"><a id="l01087" name="l01087"></a><span class="lineno"> 1087</span>        lv_obj_set_style_local_text_color(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a92fa52d98216f7072c6b45c036d23005">btn_label</a>[i], LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, color_btn_text[i]);</div>
<div class="line"><a id="l01088" name="l01088"></a><span class="lineno"> 1088</span>        lv_obj_set_style_local_text_font(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a92fa52d98216f7072c6b45c036d23005">btn_label</a>[i], LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &amp;<a class="code hl_define" href="ui__update_8c.html#aff351d118cacf27e50b7172b5fe7cc6d">LV_FONT_AUTO_SIZE</a>);</div>
<div class="line"><a id="l01089" name="l01089"></a><span class="lineno"> 1089</span>    }</div>
<div class="line"><a id="l01090" name="l01090"></a><span class="lineno"> 1090</span>    <span class="comment">//设定下拉框最大高度不超过 第一颗操作按钮 区域</span></div>
<div class="line"><a id="l01091" name="l01091"></a><span class="lineno"> 1091</span>    <span class="comment">//lv_dropdown_set_max_height(ui-&gt;dp, lv_obj_get_y(ui-&gt;btn[0]) - lv_obj_get_y(ui-&gt;dp) - lv_obj_get_height(ui-&gt;dp));</span></div>
<div class="line"><a id="l01092" name="l01092"></a><span class="lineno"> 1092</span> </div>
<div class="line"><a id="l01093" name="l01093"></a><span class="lineno"> 1093</span>    <span class="comment">//--------------------------------------------------Right--------------------------------------------------//</span></div>
<div class="line"><a id="l01094" name="l01094"></a><span class="lineno"> 1094</span>    <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61aa7dadc373d1293a6252806d1c1219d6a">_LIST_MAX_</a>; ++i)</div>
<div class="line"><a id="l01095" name="l01095"></a><span class="lineno"> 1095</span>    {</div>
<div class="line"><a id="l01096" name="l01096"></a><span class="lineno"> 1096</span>        <span class="comment">// Write codes cont_list[i]</span></div>
<div class="line"><a id="l01097" name="l01097"></a><span class="lineno"> 1097</span>        ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad49d333ebae7be69944502905f66f241">cont_list</a>[i] = lv_cont_create(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a575ff5085e47401c37a8fdead5c28cb2">cont_right</a>, NULL);</div>
<div class="line"><a id="l01098" name="l01098"></a><span class="lineno"> 1098</span>        lv_obj_set_pos(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad49d333ebae7be69944502905f66f241">cont_list</a>[i],</div>
<div class="line"><a id="l01099" name="l01099"></a><span class="lineno"> 1099</span>                       lv_obj_get_width(lv_obj_get_parent(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad49d333ebae7be69944502905f66f241">cont_list</a>[i])) / <a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61aa7dadc373d1293a6252806d1c1219d6a">_LIST_MAX_</a> * i,</div>
<div class="line"><a id="l01100" name="l01100"></a><span class="lineno"> 1100</span>                       0);</div>
<div class="line"><a id="l01101" name="l01101"></a><span class="lineno"> 1101</span>        lv_obj_set_size(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad49d333ebae7be69944502905f66f241">cont_list</a>[i],</div>
<div class="line"><a id="l01102" name="l01102"></a><span class="lineno"> 1102</span>                        lv_obj_get_width(lv_obj_get_parent(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad49d333ebae7be69944502905f66f241">cont_list</a>[i])) / <a class="code hl_enumvalue" href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61aa7dadc373d1293a6252806d1c1219d6a">_LIST_MAX_</a>,</div>
<div class="line"><a id="l01103" name="l01103"></a><span class="lineno"> 1103</span>                        lv_obj_get_height(lv_obj_get_parent(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad49d333ebae7be69944502905f66f241">cont_list</a>[i])));</div>
<div class="line"><a id="l01104" name="l01104"></a><span class="lineno"> 1104</span>        lv_cont_set_fit(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad49d333ebae7be69944502905f66f241">cont_list</a>[i], LV_FIT_NONE);</div>
<div class="line"><a id="l01105" name="l01105"></a><span class="lineno"> 1105</span>        lv_cont_set_layout(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad49d333ebae7be69944502905f66f241">cont_list</a>[i], LV_LAYOUT_CENTER);                                                  <span class="comment">//将子项与列中的中心对齐, 并在它们之间保持间距</span></div>
<div class="line"><a id="l01106" name="l01106"></a><span class="lineno"> 1106</span>        lv_obj_set_style_local_border_opa(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad49d333ebae7be69944502905f66f241">cont_list</a>[i], LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_TRANSP); <span class="comment">//纯透明</span></div>
<div class="line"><a id="l01107" name="l01107"></a><span class="lineno"> 1107</span>        lv_obj_set_style_local_outline_opa(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad49d333ebae7be69944502905f66f241">cont_list</a>[i], LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_TRANSP);</div>
<div class="line"><a id="l01108" name="l01108"></a><span class="lineno"> 1108</span> </div>
<div class="line"><a id="l01109" name="l01109"></a><span class="lineno"> 1109</span>        <span class="comment">// Write codes list_label[i]</span></div>
<div class="line"><a id="l01110" name="l01110"></a><span class="lineno"> 1110</span>        ui-&gt;<a class="code hl_variable" href="structlv__ui.html#acc037b4a511f3f67178aac07b1f0200a">list_label</a>[i] = lv_label_create(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad49d333ebae7be69944502905f66f241">cont_list</a>[i], NULL);</div>
<div class="line"><a id="l01111" name="l01111"></a><span class="lineno"> 1111</span>        lv_label_set_long_mode(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#acc037b4a511f3f67178aac07b1f0200a">list_label</a>[i], LV_LABEL_LONG_SROLL_CIRC);</div>
<div class="line"><a id="l01112" name="l01112"></a><span class="lineno"> 1112</span>        lv_obj_set_width(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#acc037b4a511f3f67178aac07b1f0200a">list_label</a>[i], lv_obj_get_width(lv_obj_get_parent(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#acc037b4a511f3f67178aac07b1f0200a">list_label</a>[i])));</div>
<div class="line"><a id="l01113" name="l01113"></a><span class="lineno"> 1113</span>        <span class="comment">// lv_obj_set_height(ui-&gt;list_label[i], lv_obj_get_height(lv_obj_get_parent(ui-&gt;list_label[i])) / 30 * 1);</span></div>
<div class="line"><a id="l01114" name="l01114"></a><span class="lineno"> 1114</span>        lv_label_set_align(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#acc037b4a511f3f67178aac07b1f0200a">list_label</a>[i], LV_LABEL_ALIGN_CENTER);</div>
<div class="line"><a id="l01115" name="l01115"></a><span class="lineno"> 1115</span>        lv_obj_set_auto_realign(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#acc037b4a511f3f67178aac07b1f0200a">list_label</a>[i], <span class="keyword">true</span>); <span class="comment">// Auto realign when the size changes</span></div>
<div class="line"><a id="l01116" name="l01116"></a><span class="lineno"> 1116</span>        <span class="comment">// lv_obj_align_origo(ui-&gt;list_label[i], NULL, LV_ALIGN_CENTER, 0, 0);  //This parametrs will be sued when realign</span></div>
<div class="line"><a id="l01117" name="l01117"></a><span class="lineno"> 1117</span>        lv_obj_set_style_local_text_color(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#acc037b4a511f3f67178aac07b1f0200a">list_label</a>[i], LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLUE);</div>
<div class="line"><a id="l01118" name="l01118"></a><span class="lineno"> 1118</span>        lv_obj_set_style_local_text_font(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#acc037b4a511f3f67178aac07b1f0200a">list_label</a>[i], LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &amp;<a class="code hl_define" href="ui__update_8c.html#aff351d118cacf27e50b7172b5fe7cc6d">LV_FONT_AUTO_SIZE</a>);</div>
<div class="line"><a id="l01119" name="l01119"></a><span class="lineno"> 1119</span>        lv_label_set_text(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#acc037b4a511f3f67178aac07b1f0200a">list_label</a>[i], <a class="code hl_variable" href="load__file_8c.html#a08687ba7285d01a737a269b697bb661c">VolumeStr</a>[<a class="code hl_variable" href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a>[i].<a class="code hl_variable" href="structlist__dp__t.html#affcceda12b139f26819f4929be705eb1">disk</a>]); <span class="comment">//标题栏显示当前路径</span></div>
<div class="line"><a id="l01120" name="l01120"></a><span class="lineno"> 1120</span> </div>
<div class="line"><a id="l01121" name="l01121"></a><span class="lineno"> 1121</span>        <span class="comment">// Write codes list[i]</span></div>
<div class="line"><a id="l01122" name="l01122"></a><span class="lineno"> 1122</span>        ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a63436e3c484508c05333317adfd3bdcb">list</a>[i] = lv_list_create(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad49d333ebae7be69944502905f66f241">cont_list</a>[i], NULL);</div>
<div class="line"><a id="l01123" name="l01123"></a><span class="lineno"> 1123</span>        lv_obj_set_size(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a63436e3c484508c05333317adfd3bdcb">list</a>[i],</div>
<div class="line"><a id="l01124" name="l01124"></a><span class="lineno"> 1124</span>                        lv_obj_get_width(lv_obj_get_parent(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a63436e3c484508c05333317adfd3bdcb">list</a>[i])),</div>
<div class="line"><a id="l01125" name="l01125"></a><span class="lineno"> 1125</span>                        lv_obj_get_height(lv_obj_get_parent(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a63436e3c484508c05333317adfd3bdcb">list</a>[i])) / 10 * 7);</div>
<div class="line"><a id="l01126" name="l01126"></a><span class="lineno"> 1126</span>        lv_list_set_anim_time(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a63436e3c484508c05333317adfd3bdcb">list</a>[i], 0);</div>
<div class="line"><a id="l01127" name="l01127"></a><span class="lineno"> 1127</span>        lv_list_set_edge_flash(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#a63436e3c484508c05333317adfd3bdcb">list</a>[i], <span class="keyword">false</span>);</div>
<div class="line"><a id="l01128" name="l01128"></a><span class="lineno"> 1128</span> </div>
<div class="line"><a id="l01129" name="l01129"></a><span class="lineno"> 1129</span>        <span class="comment">// Write codes list_btn_next[i]</span></div>
<div class="line"><a id="l01130" name="l01130"></a><span class="lineno"> 1130</span>        ui-&gt;<a class="code hl_variable" href="structlv__ui.html#aa3cd6e3ccdf1a0a2bce3e70fd56088d8">list_btn_next</a>[i] = lv_btn_create(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#ad49d333ebae7be69944502905f66f241">cont_list</a>[i], NULL);</div>
<div class="line"><a id="l01131" name="l01131"></a><span class="lineno"> 1131</span>        lv_obj_set_size(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#aa3cd6e3ccdf1a0a2bce3e70fd56088d8">list_btn_next</a>[i],</div>
<div class="line"><a id="l01132" name="l01132"></a><span class="lineno"> 1132</span>                        lv_obj_get_width(lv_obj_get_parent(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#aa3cd6e3ccdf1a0a2bce3e70fd56088d8">list_btn_next</a>[i])) / 2,</div>
<div class="line"><a id="l01133" name="l01133"></a><span class="lineno"> 1133</span>                        lv_obj_get_height(lv_obj_get_parent(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#aa3cd6e3ccdf1a0a2bce3e70fd56088d8">list_btn_next</a>[i])) / 10 * 1);</div>
<div class="line"><a id="l01134" name="l01134"></a><span class="lineno"> 1134</span>        lv_obj_set_style_local_pattern_image(ui-&gt;<a class="code hl_variable" href="structlv__ui.html#aa3cd6e3ccdf1a0a2bce3e70fd56088d8">list_btn_next</a>[i], LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_SYMBOL_NEXT);</div>
<div class="line"><a id="l01135" name="l01135"></a><span class="lineno"> 1135</span>    }</div>
<div class="line"><a id="l01136" name="l01136"></a><span class="lineno"> 1136</span>    <span class="comment">// Init events for screen</span></div>
<div class="line"><a id="l01137" name="l01137"></a><span class="lineno"> 1137</span>    <a class="code hl_function" href="ui__update_8c.html#abdb62d45c4cace1544f52cdacda45f24">events_init</a>(ui);</div>
<div class="line"><a id="l01138" name="l01138"></a><span class="lineno"> 1138</span>}</div>
<div class="line"><a id="l01139" name="l01139"></a><span class="lineno"> 1139</span> </div>
<div class="line"><a id="l01141" name="l01141"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a47e8d86c60ab3a72467fd0f33dc1605d"> 1141</a></span><span class="keyword">static</span> lv_obj_t *<a class="code hl_variable" href="ui__update_8c.html#a47e8d86c60ab3a72467fd0f33dc1605d">MsgBox</a> = NULL;</div>
<div class="line"><a id="l01142" name="l01142"></a><span class="lineno"> 1142</span> </div>
<div class="line"><a id="l01144" name="l01144"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a8128c131b645e18776b40c38bb63e287"> 1144</a></span><span class="keyword">static</span> lv_task_t *<a class="code hl_variable" href="ui__update_8c.html#a8128c131b645e18776b40c38bb63e287">MsgBox_Task</a> = NULL;</div>
<div class="line"><a id="l01145" name="l01145"></a><span class="lineno"> 1145</span> </div>
<div class="line"><a id="l01147" name="l01147"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a06caa66df343f9a30e16817c7c533e60"> 1147</a></span><span class="keyword">static</span> <span class="keyword">volatile</span> uint8_t <a class="code hl_variable" href="ui__update_8c.html#a06caa66df343f9a30e16817c7c533e60">MsgBox_Sync_Flag</a> = 0; </div>
<div class="line"><a id="l01148" name="l01148"></a><span class="lineno"> 1148</span> </div>
<div class="line"><a id="l01155" name="l01155"></a><span class="lineno"><a class="line" href="ui__update_8c.html#ad8390d39022fee758b6fb860c7906382"> 1155</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="ui__update_8c.html#ad8390d39022fee758b6fb860c7906382">msgbox_event_cb</a>(lv_obj_t *obj, lv_event_t event)</div>
<div class="line"><a id="l01156" name="l01156"></a><span class="lineno"> 1156</span>{</div>
<div class="line"><a id="l01157" name="l01157"></a><span class="lineno"> 1157</span>    <span class="keywordflow">if</span> (event == LV_EVENT_DELETE &amp;&amp; obj == <a class="code hl_variable" href="ui__update_8c.html#a47e8d86c60ab3a72467fd0f33dc1605d">MsgBox</a>)</div>
<div class="line"><a id="l01158" name="l01158"></a><span class="lineno"> 1158</span>    {</div>
<div class="line"><a id="l01159" name="l01159"></a><span class="lineno"> 1159</span>        <span class="comment">/* Delete the parent modal background */</span></div>
<div class="line"><a id="l01160" name="l01160"></a><span class="lineno"> 1160</span>        lv_obj_del_async(lv_obj_get_parent(<a class="code hl_variable" href="ui__update_8c.html#a47e8d86c60ab3a72467fd0f33dc1605d">MsgBox</a>));</div>
<div class="line"><a id="l01161" name="l01161"></a><span class="lineno"> 1161</span>        <span class="comment">/* happens before object is actually deleted! */</span></div>
<div class="line"><a id="l01162" name="l01162"></a><span class="lineno"> 1162</span>        <a class="code hl_variable" href="ui__update_8c.html#a47e8d86c60ab3a72467fd0f33dc1605d">MsgBox</a> = NULL;</div>
<div class="line"><a id="l01163" name="l01163"></a><span class="lineno"> 1163</span>        <span class="comment">/* 标志状态异步 */</span></div>
<div class="line"><a id="l01164" name="l01164"></a><span class="lineno"> 1164</span>        <a class="code hl_variable" href="ui__update_8c.html#a06caa66df343f9a30e16817c7c533e60">MsgBox_Sync_Flag</a> = 1;</div>
<div class="line"><a id="l01165" name="l01165"></a><span class="lineno"> 1165</span>    }</div>
<div class="line"><a id="l01166" name="l01166"></a><span class="lineno"> 1166</span>    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (event == LV_EVENT_VALUE_CHANGED) <span class="comment">/* A button was clicked */</span></div>
<div class="line"><a id="l01167" name="l01167"></a><span class="lineno"> 1167</span>    {</div>
<div class="line"><a id="l01168" name="l01168"></a><span class="lineno"> 1168</span>        lv_msgbox_start_auto_close(obj, 0);</div>
<div class="line"><a id="l01169" name="l01169"></a><span class="lineno"> 1169</span>    }</div>
<div class="line"><a id="l01170" name="l01170"></a><span class="lineno"> 1170</span>}</div>
<div class="line"><a id="l01171" name="l01171"></a><span class="lineno"> 1171</span> </div>
<div class="line"><a id="l01177" name="l01177"></a><span class="lineno"><a class="line" href="ui__update_8c.html#a623d03af25d3abe9fbe311d24d57ca28"> 1177</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="ui__update_8c.html#a623d03af25d3abe9fbe311d24d57ca28">msgbox_sync_task</a>(lv_task_t *t)</div>
<div class="line"><a id="l01178" name="l01178"></a><span class="lineno"> 1178</span>{</div>
<div class="line"><a id="l01179" name="l01179"></a><span class="lineno"> 1179</span>    <span class="keywordflow">if</span> (<a class="code hl_variable" href="ui__update_8c.html#a06caa66df343f9a30e16817c7c533e60">MsgBox_Sync_Flag</a> != 0 || <a class="code hl_variable" href="ui__update_8c.html#a8128c131b645e18776b40c38bb63e287">MsgBox_Task</a> == NULL || <a class="code hl_variable" href="ui__update_8c.html#a8128c131b645e18776b40c38bb63e287">MsgBox_Task</a>-&gt;user_data == NULL)</div>
<div class="line"><a id="l01180" name="l01180"></a><span class="lineno"> 1180</span>        return ;</div>
<div class="line"><a id="l01181" name="l01181"></a><span class="lineno"> 1181</span> </div>
<div class="line"><a id="l01182" name="l01182"></a><span class="lineno"> 1182</span>    <a class="code hl_typedef" href="ui__update_8c.html#a81fe2f73bce795df8ef1757fc170902a">msgbox_sync_cb</a> user_cb = (<a class="code hl_typedef" href="ui__update_8c.html#a81fe2f73bce795df8ef1757fc170902a">msgbox_sync_cb</a>)(<a class="code hl_variable" href="ui__update_8c.html#a8128c131b645e18776b40c38bb63e287">MsgBox_Task</a>-&gt;user_data);</div>
<div class="line"><a id="l01183" name="l01183"></a><span class="lineno"> 1183</span>    <span class="keywordflow">if</span> (user_cb() == 0) <span class="comment">/* 任务已完成, 通知消息框关闭 */</span></div>
<div class="line"><a id="l01184" name="l01184"></a><span class="lineno"> 1184</span>    {</div>
<div class="line"><a id="l01185" name="l01185"></a><span class="lineno"> 1185</span>        <span class="keywordflow">if</span> (<a class="code hl_variable" href="ui__update_8c.html#a47e8d86c60ab3a72467fd0f33dc1605d">MsgBox</a> != NULL)</div>
<div class="line"><a id="l01186" name="l01186"></a><span class="lineno"> 1186</span>            lv_msgbox_start_auto_close(<a class="code hl_variable" href="ui__update_8c.html#a47e8d86c60ab3a72467fd0f33dc1605d">MsgBox</a>, 0);</div>
<div class="line"><a id="l01187" name="l01187"></a><span class="lineno"> 1187</span> </div>
<div class="line"><a id="l01188" name="l01188"></a><span class="lineno"> 1188</span>        lv_task_del(<a class="code hl_variable" href="ui__update_8c.html#a8128c131b645e18776b40c38bb63e287">MsgBox_Task</a>);</div>
<div class="line"><a id="l01189" name="l01189"></a><span class="lineno"> 1189</span>        <a class="code hl_variable" href="ui__update_8c.html#a8128c131b645e18776b40c38bb63e287">MsgBox_Task</a> = NULL;</div>
<div class="line"><a id="l01190" name="l01190"></a><span class="lineno"> 1190</span>    }</div>
<div class="line"><a id="l01191" name="l01191"></a><span class="lineno"> 1191</span>}</div>
<div class="line"><a id="l01192" name="l01192"></a><span class="lineno"> 1192</span> </div>
<div class="line"><a id="l01201" name="l01201"></a><span class="lineno"><a class="line" href="ui__update_8c.html#af7291cda4b568af469eecf3fbf3a7094"> 1201</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="ui__update_8c.html#af7291cda4b568af469eecf3fbf3a7094">msgbox_show</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *msg_text, <span class="keyword">const</span> <span class="keywordtype">char</span> **btn_text,</div>
<div class="line"><a id="l01202" name="l01202"></a><span class="lineno"> 1202</span>                        <span class="keyword">const</span> uint32_t wait_ms, <a class="code hl_typedef" href="ui__update_8c.html#a81fe2f73bce795df8ef1757fc170902a">msgbox_sync_cb</a> user_cb)</div>
<div class="line"><a id="l01203" name="l01203"></a><span class="lineno"> 1203</span>{</div>
<div class="line"><a id="l01204" name="l01204"></a><span class="lineno"> 1204</span>    <span class="comment">// Create a full-screen background</span></div>
<div class="line"><a id="l01205" name="l01205"></a><span class="lineno"> 1205</span>    lv_obj_t *obj_bg = lv_obj_create(lv_scr_act(), NULL);</div>
<div class="line"><a id="l01206" name="l01206"></a><span class="lineno"> 1206</span>    lv_obj_reset_style_list(obj_bg, LV_OBJ_PART_MAIN);</div>
<div class="line"><a id="l01207" name="l01207"></a><span class="lineno"> 1207</span>    lv_obj_set_style_local_bg_color(obj_bg, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);</div>
<div class="line"><a id="l01208" name="l01208"></a><span class="lineno"> 1208</span>    lv_obj_set_style_local_bg_opa(obj_bg, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_50);</div>
<div class="line"><a id="l01209" name="l01209"></a><span class="lineno"> 1209</span>    lv_obj_set_pos(obj_bg, 0, 0);</div>
<div class="line"><a id="l01210" name="l01210"></a><span class="lineno"> 1210</span>    lv_obj_set_size(obj_bg, LV_HOR_RES_MAX, LV_VER_RES_MAX);</div>
<div class="line"><a id="l01211" name="l01211"></a><span class="lineno"> 1211</span> </div>
<div class="line"><a id="l01212" name="l01212"></a><span class="lineno"> 1212</span>    <span class="comment">// Create the message box as a child of the modal background</span></div>
<div class="line"><a id="l01213" name="l01213"></a><span class="lineno"> 1213</span>    <a class="code hl_variable" href="ui__update_8c.html#a47e8d86c60ab3a72467fd0f33dc1605d">MsgBox</a> = lv_msgbox_create(obj_bg, NULL);</div>
<div class="line"><a id="l01214" name="l01214"></a><span class="lineno"> 1214</span>    lv_msgbox_add_btns(<a class="code hl_variable" href="ui__update_8c.html#a47e8d86c60ab3a72467fd0f33dc1605d">MsgBox</a>, btn_text);</div>
<div class="line"><a id="l01215" name="l01215"></a><span class="lineno"> 1215</span>    <span class="comment">// lv_msgbox_set_recolor(MsgBox, true);</span></div>
<div class="line"><a id="l01216" name="l01216"></a><span class="lineno"> 1216</span>    lv_obj_set_style_local_text_color(<a class="code hl_variable" href="ui__update_8c.html#a47e8d86c60ab3a72467fd0f33dc1605d">MsgBox</a>, LV_MSGBOX_PART_BG, LV_STATE_DEFAULT, LV_COLOR_RED);</div>
<div class="line"><a id="l01217" name="l01217"></a><span class="lineno"> 1217</span>    lv_msgbox_set_text_fmt(<a class="code hl_variable" href="ui__update_8c.html#a47e8d86c60ab3a72467fd0f33dc1605d">MsgBox</a>, <span class="stringliteral">&quot;%s&quot;</span>, msg_text);</div>
<div class="line"><a id="l01218" name="l01218"></a><span class="lineno"> 1218</span>    lv_obj_set_size(<a class="code hl_variable" href="ui__update_8c.html#a47e8d86c60ab3a72467fd0f33dc1605d">MsgBox</a>, LV_HOR_RES_MAX / 4 * 3, LV_VER_RES_MAX / 4 * 3);</div>
<div class="line"><a id="l01219" name="l01219"></a><span class="lineno"> 1219</span>    lv_obj_align(<a class="code hl_variable" href="ui__update_8c.html#a47e8d86c60ab3a72467fd0f33dc1605d">MsgBox</a>, NULL, LV_ALIGN_CENTER, 0, 0);</div>
<div class="line"><a id="l01220" name="l01220"></a><span class="lineno"> 1220</span>    lv_obj_set_event_cb(<a class="code hl_variable" href="ui__update_8c.html#a47e8d86c60ab3a72467fd0f33dc1605d">MsgBox</a>, <a class="code hl_function" href="ui__update_8c.html#ad8390d39022fee758b6fb860c7906382">msgbox_event_cb</a>);</div>
<div class="line"><a id="l01221" name="l01221"></a><span class="lineno"> 1221</span>    <span class="comment">// lv_msgbox_set_anim_time(MsgBox, 100);</span></div>
<div class="line"><a id="l01222" name="l01222"></a><span class="lineno"> 1222</span> </div>
<div class="line"><a id="l01223" name="l01223"></a><span class="lineno"> 1223</span>    <span class="comment">//禁止自动关闭</span></div>
<div class="line"><a id="l01224" name="l01224"></a><span class="lineno"> 1224</span>    lv_msgbox_stop_auto_close(<a class="code hl_variable" href="ui__update_8c.html#a47e8d86c60ab3a72467fd0f33dc1605d">MsgBox</a>);</div>
<div class="line"><a id="l01225" name="l01225"></a><span class="lineno"> 1225</span>    <span class="keywordflow">if</span> (wait_ms &gt; 0)</div>
<div class="line"><a id="l01226" name="l01226"></a><span class="lineno"> 1226</span>    {</div>
<div class="line"><a id="l01227" name="l01227"></a><span class="lineno"> 1227</span>        lv_msgbox_start_auto_close(<a class="code hl_variable" href="ui__update_8c.html#a47e8d86c60ab3a72467fd0f33dc1605d">MsgBox</a>, wait_ms); <span class="comment">//设置定时自动关闭</span></div>
<div class="line"><a id="l01228" name="l01228"></a><span class="lineno"> 1228</span>    }</div>
<div class="line"><a id="l01229" name="l01229"></a><span class="lineno"> 1229</span>    </div>
<div class="line"><a id="l01230" name="l01230"></a><span class="lineno"> 1230</span>    <span class="keywordflow">if</span> (user_cb != NULL)</div>
<div class="line"><a id="l01231" name="l01231"></a><span class="lineno"> 1231</span>    {</div>
<div class="line"><a id="l01232" name="l01232"></a><span class="lineno"> 1232</span>        <span class="keyword">const</span> uint32_t time_ms = 100; <span class="comment">//执行用户回调的周期间隔 / ms (TODO:后续可开放给用户自定义设置)</span></div>
<div class="line"><a id="l01233" name="l01233"></a><span class="lineno"> 1233</span>        <a class="code hl_variable" href="ui__update_8c.html#a8128c131b645e18776b40c38bb63e287">MsgBox_Task</a> = lv_task_create(<a class="code hl_function" href="ui__update_8c.html#a623d03af25d3abe9fbe311d24d57ca28">msgbox_sync_task</a>, (wait_ms != 0) ? time_ms : 0, LV_TASK_PRIO_MID, user_cb);</div>
<div class="line"><a id="l01234" name="l01234"></a><span class="lineno"> 1234</span>        <span class="keywordflow">if</span> (wait_ms != 0)</div>
<div class="line"><a id="l01235" name="l01235"></a><span class="lineno"> 1235</span>        {</div>
<div class="line"><a id="l01236" name="l01236"></a><span class="lineno"> 1236</span>            lv_task_set_repeat_count(<a class="code hl_variable" href="ui__update_8c.html#a8128c131b645e18776b40c38bb63e287">MsgBox_Task</a>, wait_ms / time_ms); <span class="comment">//计算需要执行几次任务, 不足 time_ms 则舍去</span></div>
<div class="line"><a id="l01237" name="l01237"></a><span class="lineno"> 1237</span>        }</div>
<div class="line"><a id="l01238" name="l01238"></a><span class="lineno"> 1238</span>        lv_task_ready(<a class="code hl_variable" href="ui__update_8c.html#a8128c131b645e18776b40c38bb63e287">MsgBox_Task</a>);</div>
<div class="line"><a id="l01239" name="l01239"></a><span class="lineno"> 1239</span>    }</div>
<div class="line"><a id="l01240" name="l01240"></a><span class="lineno"> 1240</span>    <span class="comment">/* 标志状态同步 */</span></div>
<div class="line"><a id="l01241" name="l01241"></a><span class="lineno"> 1241</span>    <a class="code hl_variable" href="ui__update_8c.html#a06caa66df343f9a30e16817c7c533e60">MsgBox_Sync_Flag</a> = 0;</div>
<div class="line"><a id="l01242" name="l01242"></a><span class="lineno"> 1242</span>}</div>
<div class="ttc" id="a_flash_disk_8c_html_a5ab90dc9341a1459125a15b506cfe35a"><div class="ttname"><a href="_flash_disk_8c.html#a5ab90dc9341a1459125a15b506cfe35a">FlashDiskFlush</a></div><div class="ttdeci">void FlashDiskFlush(void)</div><div class="ttdoc">刷新脏缓冲区</div><div class="ttdef"><b>Definition:</b> <a href="_flash_disk_8c_source.html#l00162">FlashDisk.c:162</a></div></div>
<div class="ttc" id="a_mass_storage_8c_html_aa02df815c14caedbc2fd0a8910d2e055"><div class="ttname"><a href="_mass_storage_8c.html#aa02df815c14caedbc2fd0a8910d2e055">MSC_Init</a></div><div class="ttdeci">void MSC_Init(void)</div><div class="ttdef"><b>Definition:</b> <a href="_mass_storage_8c_source.html#l00022">MassStorage.c:22</a></div></div>
<div class="ttc" id="a_mass_storage_8c_html_acc63e729ab9145b644fc4da28a63636e"><div class="ttname"><a href="_mass_storage_8c.html#acc63e729ab9145b644fc4da28a63636e">MSC_ProcessOUT</a></div><div class="ttdeci">void MSC_ProcessOUT(void)</div><div class="ttdef"><b>Definition:</b> <a href="_mass_storage_8c_source.html#l00237">MassStorage.c:237</a></div></div>
<div class="ttc" id="a_mass_storage_8h_html"><div class="ttname"><a href="_mass_storage_8h.html">MassStorage.h</a></div></div>
<div class="ttc" id="absp__init_8h_html"><div class="ttname"><a href="bsp__init_8h.html">bsp_init.h</a></div><div class="ttdoc">板级硬件外设初始化</div></div>
<div class="ttc" id="afile__table_8c_html_a210f9e081ee07b322afeec966766b06a"><div class="ttname"><a href="file__table_8c.html#a210f9e081ee07b322afeec966766b06a">File_Table</a></div><div class="ttdeci">table_class_t File_Table</div><div class="ttdoc">文件表</div><div class="ttdef"><b>Definition:</b> <a href="file__table_8c_source.html#l00296">file_table.c:296</a></div></div>
<div class="ttc" id="afile__table_8c_html_a3b8264ecd2971c7f1409a78c16a80fff"><div class="ttname"><a href="file__table_8c.html#a3b8264ecd2971c7f1409a78c16a80fff">check_file_table</a></div><div class="ttdeci">uint32_t check_file_table(const disk_t disk, const table_class_t *file_table, const uint32_t start_index, const uint32_t num)</div><div class="ttdoc">按文件表依次验证磁盘文件</div><div class="ttdef"><b>Definition:</b> <a href="file__table_8c_source.html#l00342">file_table.c:342</a></div></div>
<div class="ttc" id="afile__table_8c_html_a9f89967794eeb4df91c77da5f983e163"><div class="ttname"><a href="file__table_8c.html#a9f89967794eeb4df91c77da5f983e163">show_copying_file_table</a></div><div class="ttdeci">uint8_t show_copying_file_table(const disk_t src_disk, const disk_t dst_disk, const table_class_t *file_table, const uint32_t start_index, const uint32_t num)</div><div class="ttdoc">按文件表拷贝文件并显示拷贝过程 UI</div><div class="ttdef"><b>Definition:</b> <a href="file__table_8c_source.html#l00379">file_table.c:379</a></div></div>
<div class="ttc" id="afile__table_8c_html_ae9814059aade68167dd27fac6439fa67"><div class="ttname"><a href="file__table_8c.html#ae9814059aade68167dd27fac6439fa67">show_copying_file_list</a></div><div class="ttdeci">uint8_t show_copying_file_list(const disk_t src_disk, const disk_t dst_disk, lv_ll_t *file_list)</div><div class="ttdoc">按文件名链表拷贝文件并显示拷贝过程 UI</div><div class="ttdef"><b>Definition:</b> <a href="file__table_8c_source.html#l00480">file_table.c:480</a></div></div>
<div class="ttc" id="afile__table_8h_html"><div class="ttname"><a href="file__table_8h.html">file_table.h</a></div><div class="ttdoc">以文件表管理 SPI-Flash 存储的文件</div></div>
<div class="ttc" id="afile__table_8h_html_a1050bc568c1b6f276b9280fa238912e4"><div class="ttname"><a href="file__table_8h.html#a1050bc568c1b6f276b9280fa238912e4">FT_SPI_VIDEO</a></div><div class="ttdeci">#define FT_SPI_VIDEO</div><div class="ttdoc">Spi_Flash - video_boot</div><div class="ttdef"><b>Definition:</b> <a href="file__table_8h_source.html#l00040">file_table.h:40</a></div></div>
<div class="ttc" id="afile__table_8h_html_a53bd581d915222e8bcbd0f453dcc60ef"><div class="ttname"><a href="file__table_8h.html#a53bd581d915222e8bcbd0f453dcc60ef">FT_IMG_START</a></div><div class="ttdeci">#define FT_IMG_START</div><div class="ttdoc">图片文件位于表中的起始索引</div><div class="ttdef"><b>Definition:</b> <a href="file__table_8h_source.html#l00057">file_table.h:57</a></div></div>
<div class="ttc" id="afile__table_8h_html_a9e2b981a0be65b6e5506b5c71aa62753"><div class="ttname"><a href="file__table_8h.html#a9e2b981a0be65b6e5506b5c71aa62753">FT_IMG_NUM</a></div><div class="ttdeci">#define FT_IMG_NUM</div><div class="ttdoc">图片个数</div><div class="ttdef"><b>Definition:</b> <a href="file__table_8h_source.html#l00059">file_table.h:59</a></div></div>
<div class="ttc" id="afile__table_8h_html_ac482e9c7e4db518dbc7e02d01d8caa3d"><div class="ttname"><a href="file__table_8h.html#ac482e9c7e4db518dbc7e02d01d8caa3d">FT_VIDEO_NUM</a></div><div class="ttdeci">#define FT_VIDEO_NUM</div><div class="ttdoc">视频个数</div><div class="ttdef"><b>Definition:</b> <a href="file__table_8h_source.html#l00043">file_table.h:43</a></div></div>
<div class="ttc" id="afile__table_8h_html_ac8e6df38331152c1e09f9a43e6ab34a3"><div class="ttname"><a href="file__table_8h.html#ac8e6df38331152c1e09f9a43e6ab34a3">FT_MOVE_VIDEO</a></div><div class="ttdeci">#define FT_MOVE_VIDEO</div><div class="ttdoc">Move_Storage - video_boot(超过 Spi_Flash 容量不拷贝)</div><div class="ttdef"><b>Definition:</b> <a href="file__table_8h_source.html#l00039">file_table.h:39</a></div></div>
<div class="ttc" id="afile__table_8h_html_ad9072054406a903237e6ea1c0e6ff327"><div class="ttname"><a href="file__table_8h.html#ad9072054406a903237e6ea1c0e6ff327">FT_FONT_NUM</a></div><div class="ttdeci">#define FT_FONT_NUM</div><div class="ttdoc">字库个数</div><div class="ttdef"><b>Definition:</b> <a href="file__table_8h_source.html#l00054">file_table.h:54</a></div></div>
<div class="ttc" id="afile__table_8h_html_aec25a2051242e8cef091f04dc5efb53f"><div class="ttname"><a href="file__table_8h.html#aec25a2051242e8cef091f04dc5efb53f">FT_MUSIC_NUM</a></div><div class="ttdeci">#define FT_MUSIC_NUM</div><div class="ttdoc">音频个数</div><div class="ttdef"><b>Definition:</b> <a href="file__table_8h_source.html#l00049">file_table.h:49</a></div></div>
<div class="ttc" id="aload__file_8c_html_a08687ba7285d01a737a269b697bb661c"><div class="ttname"><a href="load__file_8c.html#a08687ba7285d01a737a269b697bb661c">VolumeStr</a></div><div class="ttdeci">const char *const VolumeStr[FF_VOLUMES]</div><div class="ttdoc">User defied volume ID (详见 ffconf.h 内的 &quot;FF_STR_VOLUME_ID&quot; &quot;FF_VOLUME_STRS&quot; )</div><div class="ttdef"><b>Definition:</b> <a href="load__file_8c_source.html#l00108">load_file.c:108</a></div></div>
<div class="ttc" id="aload__file_8c_html_a51d572edecc93d80a160b93843fb5208"><div class="ttname"><a href="load__file_8c.html#a51d572edecc93d80a160b93843fb5208">fs_mkfs</a></div><div class="ttdeci">uint8_t fs_mkfs(disk_t disk)</div><div class="ttdoc">磁盘新建卷, 重置清空卷</div><div class="ttdef"><b>Definition:</b> <a href="load__file_8c_source.html#l00162">load_file.c:162</a></div></div>
<div class="ttc" id="aload__file_8c_html_aebe4a0d647831986c734e1788150a064"><div class="ttname"><a href="load__file_8c.html#aebe4a0d647831986c734e1788150a064">fs_mount</a></div><div class="ttdeci">uint8_t fs_mount(disk_t disk)</div><div class="ttdoc">为磁盘挂载文件系统</div><div class="ttdef"><b>Definition:</b> <a href="load__file_8c_source.html#l00128">load_file.c:128</a></div></div>
<div class="ttc" id="aload__file_8h_html"><div class="ttname"><a href="load__file_8h.html">load_file.h</a></div><div class="ttdoc">加载/拷贝文件</div></div>
<div class="ttc" id="aload__file_8h_html_a44edb5dd69763758dda6af4dd162c997"><div class="ttname"><a href="load__file_8h.html#a44edb5dd69763758dda6af4dd162c997">disk_t</a></div><div class="ttdeci">disk_t</div><div class="ttdoc">磁盘类型</div><div class="ttdef"><b>Definition:</b> <a href="load__file_8h_source.html#l00040">load_file.h:41</a></div></div>
<div class="ttc" id="aload__file_8h_html_a44edb5dd69763758dda6af4dd162c997a65f6b55fdc64778bf10632a795b97761"><div class="ttname"><a href="load__file_8h.html#a44edb5dd69763758dda6af4dd162c997a65f6b55fdc64778bf10632a795b97761">USB</a></div><div class="ttdeci">@ USB</div><div class="ttdoc">U盘( Full / Low - Speed )</div><div class="ttdef"><b>Definition:</b> <a href="load__file_8h_source.html#l00044">load_file.h:44</a></div></div>
<div class="ttc" id="aload__file_8h_html_a44edb5dd69763758dda6af4dd162c997a8268cafd51299d814aba050e5f54f1ac"><div class="ttname"><a href="load__file_8h.html#a44edb5dd69763758dda6af4dd162c997a8268cafd51299d814aba050e5f54f1ac">SD</a></div><div class="ttdeci">@ SD</div><div class="ttdoc">SD-TF卡(2 ~ 32 GB)</div><div class="ttdef"><b>Definition:</b> <a href="load__file_8h_source.html#l00043">load_file.h:43</a></div></div>
<div class="ttc" id="aload__file_8h_html_a44edb5dd69763758dda6af4dd162c997aefea9eb0772378037221a3f1fe759a76"><div class="ttname"><a href="load__file_8h.html#a44edb5dd69763758dda6af4dd162c997aefea9eb0772378037221a3f1fe759a76">SPI</a></div><div class="ttdeci">@ SPI</div><div class="ttdoc">SPI-Flash</div><div class="ttdef"><b>Definition:</b> <a href="load__file_8h_source.html#l00042">load_file.h:42</a></div></div>
<div class="ttc" id="alog_8h_html"><div class="ttname"><a href="log_8h.html">log.h</a></div><div class="ttdoc">日志打印/用户提示(告警)</div></div>
<div class="ttc" id="astructlist__dp__t_html"><div class="ttname"><a href="structlist__dp__t.html">list_dp_t</a></div><div class="ttdoc">列表信息</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00155">ui_update.c:156</a></div></div>
<div class="ttc" id="astructlist__dp__t_html_aa59fe1cb43760885aa78301453764fe0"><div class="ttname"><a href="structlist__dp__t.html#aa59fe1cb43760885aa78301453764fe0">list_dp_t::dir</a></div><div class="ttdeci">DIR dir</div><div class="ttdoc">目录信息</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00159">ui_update.c:159</a></div></div>
<div class="ttc" id="astructlist__dp__t_html_ab790c3badafe8a936877b3f795a12d99"><div class="ttname"><a href="structlist__dp__t.html#ab790c3badafe8a936877b3f795a12d99">list_dp_t::path</a></div><div class="ttdeci">char path[FF_MAX_LFN]</div><div class="ttdoc">当前所在的绝对路径(注意嵌套过深会导致越界, 此处定义为 FF_MAX_LFN 一般不容易溢出, 较好的办法应是在堆中申请空间)</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00157">ui_update.c:157</a></div></div>
<div class="ttc" id="astructlist__dp__t_html_adb2adf9b3f315041beb78852fa37a984"><div class="ttname"><a href="structlist__dp__t.html#adb2adf9b3f315041beb78852fa37a984">list_dp_t::fno</a></div><div class="ttdeci">FILINFO fno</div><div class="ttdoc">文件信息</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00160">ui_update.c:160</a></div></div>
<div class="ttc" id="astructlist__dp__t_html_affcceda12b139f26819f4929be705eb1"><div class="ttname"><a href="structlist__dp__t.html#affcceda12b139f26819f4929be705eb1">list_dp_t::disk</a></div><div class="ttdeci">disk_t disk</div><div class="ttdoc">介质类型</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00158">ui_update.c:158</a></div></div>
<div class="ttc" id="astructlv__ui_html"><div class="ttname"><a href="structlv__ui.html">lv_ui</a></div><div class="ttdoc">UI 布局设计</div><div class="ttdef"><b>Definition:</b> <a href="ui_8h_source.html#l00130">ui.h:131</a></div></div>
<div class="ttc" id="astructlv__ui_html_a3724878ba8252fb12748f13ac00db976"><div class="ttname"><a href="structlv__ui.html#a3724878ba8252fb12748f13ac00db976">lv_ui::btn</a></div><div class="ttdeci">lv_obj_t * btn[_BTN_MAX_]</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00137">ui_update.c:137</a></div></div>
<div class="ttc" id="astructlv__ui_html_a575ff5085e47401c37a8fdead5c28cb2"><div class="ttname"><a href="structlv__ui.html#a575ff5085e47401c37a8fdead5c28cb2">lv_ui::cont_right</a></div><div class="ttdeci">lv_obj_t * cont_right</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00140">ui_update.c:140</a></div></div>
<div class="ttc" id="astructlv__ui_html_a63436e3c484508c05333317adfd3bdcb"><div class="ttname"><a href="structlv__ui.html#a63436e3c484508c05333317adfd3bdcb">lv_ui::list</a></div><div class="ttdeci">lv_obj_t * list[_LIST_MAX_]</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00144">ui_update.c:144</a></div></div>
<div class="ttc" id="astructlv__ui_html_a6bc13c5836684fe7a05318caa6b9faa9"><div class="ttname"><a href="structlv__ui.html#a6bc13c5836684fe7a05318caa6b9faa9">lv_ui::dp</a></div><div class="ttdeci">lv_obj_t * dp</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00135">ui_update.c:135</a></div></div>
<div class="ttc" id="astructlv__ui_html_a797f71be78f3620e700c217a7b569bfc"><div class="ttname"><a href="structlv__ui.html#a797f71be78f3620e700c217a7b569bfc">lv_ui::cont_left</a></div><div class="ttdeci">lv_obj_t * cont_left</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00133">ui_update.c:133</a></div></div>
<div class="ttc" id="astructlv__ui_html_a92fa52d98216f7072c6b45c036d23005"><div class="ttname"><a href="structlv__ui.html#a92fa52d98216f7072c6b45c036d23005">lv_ui::btn_label</a></div><div class="ttdeci">lv_obj_t * btn_label[_BTN_MAX_]</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00138">ui_update.c:138</a></div></div>
<div class="ttc" id="astructlv__ui_html_aa3cd6e3ccdf1a0a2bce3e70fd56088d8"><div class="ttname"><a href="structlv__ui.html#aa3cd6e3ccdf1a0a2bce3e70fd56088d8">lv_ui::list_btn_next</a></div><div class="ttdeci">lv_obj_t * list_btn_next[_LIST_MAX_]</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00146">ui_update.c:146</a></div></div>
<div class="ttc" id="astructlv__ui_html_aab0990bea6532e3c3d13fdf497ac6a7d"><div class="ttname"><a href="structlv__ui.html#aab0990bea6532e3c3d13fdf497ac6a7d">lv_ui::obj_bg</a></div><div class="ttdeci">lv_obj_t * obj_bg</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00131">ui_update.c:131</a></div></div>
<div class="ttc" id="astructlv__ui_html_acc037b4a511f3f67178aac07b1f0200a"><div class="ttname"><a href="structlv__ui.html#acc037b4a511f3f67178aac07b1f0200a">lv_ui::list_label</a></div><div class="ttdeci">lv_obj_t * list_label[_LIST_MAX_]</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00145">ui_update.c:145</a></div></div>
<div class="ttc" id="astructlv__ui_html_ad49d333ebae7be69944502905f66f241"><div class="ttname"><a href="structlv__ui.html#ad49d333ebae7be69944502905f66f241">lv_ui::cont_list</a></div><div class="ttdeci">lv_obj_t * cont_list[_LIST_MAX_]</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00142">ui_update.c:142</a></div></div>
<div class="ttc" id="astructlv__ui_html_ad6ed790d22701e3f18bc9e56076d37be"><div class="ttname"><a href="structlv__ui.html#ad6ed790d22701e3f18bc9e56076d37be">lv_ui::label_notes</a></div><div class="ttdeci">lv_obj_t * label_notes</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00136">ui_update.c:136</a></div></div>
<div class="ttc" id="astructtable__class__t_html_a50759ab8147814e1075b574b51d12e64"><div class="ttname"><a href="structtable__class__t.html#a50759ab8147814e1075b574b51d12e64">table_class_t::table_size</a></div><div class="ttdeci">uint32_t table_size</div><div class="ttdoc">文件表总数量</div><div class="ttdef"><b>Definition:</b> <a href="file__table_8h_source.html#l00075">file_table.h:75</a></div></div>
<div class="ttc" id="astructtable__class__t_html_a5be3dd4ebfa388f80036fee2ac2768f1"><div class="ttname"><a href="structtable__class__t.html#a5be3dd4ebfa388f80036fee2ac2768f1">table_class_t::file</a></div><div class="ttdeci">user_file_t * file</div><div class="ttdoc">文件</div><div class="ttdef"><b>Definition:</b> <a href="file__table_8h_source.html#l00074">file_table.h:74</a></div></div>
<div class="ttc" id="astructuser__file__t_html_a8f8f80d37794cde9472343e4487ba3eb"><div class="ttname"><a href="structuser__file__t.html#a8f8f80d37794cde9472343e4487ba3eb">user_file_t::name</a></div><div class="ttdeci">const char * name</div><div class="ttdoc">文件名</div><div class="ttdef"><b>Definition:</b> <a href="file__table_8h_source.html#l00064">file_table.h:64</a></div></div>
<div class="ttc" id="aui__update_8c_html_a06264759c9982089ba92c1d631969196"><div class="ttname"><a href="ui__update_8c.html#a06264759c9982089ba92c1d631969196">MsgBox_Wait_Ms</a></div><div class="ttdeci">static const uint32_t MsgBox_Wait_Ms</div><div class="ttdoc">msgbox 弹窗消息提示显示时长</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00191">ui_update.c:191</a></div></div>
<div class="ttc" id="aui__update_8c_html_a06caa66df343f9a30e16817c7c533e60"><div class="ttname"><a href="ui__update_8c.html#a06caa66df343f9a30e16817c7c533e60">MsgBox_Sync_Flag</a></div><div class="ttdeci">static volatile uint8_t MsgBox_Sync_Flag</div><div class="ttdoc">消息框与任务之间的同步标志(0-状态同步 1-状态异步改变)</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l01147">ui_update.c:1147</a></div></div>
<div class="ttc" id="aui__update_8c_html_a0914c8a5cdee556dcabd181982c81260"><div class="ttname"><a href="ui__update_8c.html#a0914c8a5cdee556dcabd181982c81260">setup_scr_page</a></div><div class="ttdeci">static void setup_scr_page(lv_ui *ui)</div><div class="ttdoc">创建本页面所用控件布局</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l01004">ui_update.c:1004</a></div></div>
<div class="ttc" id="aui__update_8c_html_a0f600edde0d29f18851c4f5de5a9fc3d"><div class="ttname"><a href="ui__update_8c.html#a0f600edde0d29f18851c4f5de5a9fc3d">Dot_Ch</a></div><div class="ttdeci">static const char Dot_Ch</div><div class="ttdoc">文件名后缀</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00167">ui_update.c:167</a></div></div>
<div class="ttc" id="aui__update_8c_html_a106a57df6249072c630361740348469e"><div class="ttname"><a href="ui__update_8c.html#a106a57df6249072c630361740348469e">clean_scr_page</a></div><div class="ttdeci">static void clean_scr_page(lv_ui *ui)</div><div class="ttdoc">销毁本页面所有控件</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00993">ui_update.c:993</a></div></div>
<div class="ttc" id="aui__update_8c_html_a1a09f4ed59173b0220ba241a673ea3ec"><div class="ttname"><a href="ui__update_8c.html#a1a09f4ed59173b0220ba241a673ea3ec">boot_select_mbox_cb</a></div><div class="ttdeci">static void boot_select_mbox_cb(lv_obj_t *obj, lv_event_t event)</div><div class="ttdoc">开机启动引导消息框选择回调</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00353">ui_update.c:353</a></div></div>
<div class="ttc" id="aui__update_8c_html_a3dbd73c82f05a5370635333b5ed68aea"><div class="ttname"><a href="ui__update_8c.html#a3dbd73c82f05a5370635333b5ed68aea">btn_click_cb</a></div><div class="ttdeci">static uint32_t btn_click_cb(btn_jump_t btn_flag)</div><div class="ttdoc">点击不同的按钮后, 由此函数执行对应动作</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00651">ui_update.c:651</a></div></div>
<div class="ttc" id="aui__update_8c_html_a47e8d86c60ab3a72467fd0f33dc1605d"><div class="ttname"><a href="ui__update_8c.html#a47e8d86c60ab3a72467fd0f33dc1605d">MsgBox</a></div><div class="ttdeci">static lv_obj_t * MsgBox</div><div class="ttdoc">消息框弹出提示控件对象</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l01141">ui_update.c:1141</a></div></div>
<div class="ttc" id="aui__update_8c_html_a4b62aef18e10709cce125faee1b7dd52"><div class="ttname"><a href="ui__update_8c.html#a4b62aef18e10709cce125faee1b7dd52">file_explorer</a></div><div class="ttdeci">static uint8_t file_explorer(void)</div><div class="ttdoc">文件管理器</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00380">ui_update.c:380</a></div></div>
<div class="ttc" id="aui__update_8c_html_a4dd0246f2fafec4239a6404f01a15f47"><div class="ttname"><a href="ui__update_8c.html#a4dd0246f2fafec4239a6404f01a15f47">UD_LOG</a></div><div class="ttdeci">#define UD_LOG(...)</div><div class="ttdoc">模块调试日志打印宏</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00081">ui_update.c:81</a></div></div>
<div class="ttc" id="aui__update_8c_html_a4ffa04991f0097ff752c1938c60dc6f0"><div class="ttname"><a href="ui__update_8c.html#a4ffa04991f0097ff752c1938c60dc6f0">Btn_Text</a></div><div class="ttdeci">static const char *const Btn_Text[_BTN_MAX_]</div><div class="ttdoc">按钮文本</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00181">ui_update.c:181</a></div></div>
<div class="ttc" id="aui__update_8c_html_a50ade5308cd9daf421ac0c8a6f6c1f82"><div class="ttname"><a href="ui__update_8c.html#a50ade5308cd9daf421ac0c8a6f6c1f82">File_Explorer_Flag</a></div><div class="ttdeci">static volatile btn_jump_t File_Explorer_Flag</div><div class="ttdoc">文件列表管理器跳出标志 BTN_MAX : Default BTN_LIST : List (对移动磁盘列表中已被点击的文件 更新拷贝至 本地磁盘 ) BTN_ALL : ALL (在移动磁盘列表 &lt;根...</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00225">ui_update.c:225</a></div></div>
<div class="ttc" id="aui__update_8c_html_a527b235543e81472134d70bf86683ec7"><div class="ttname"><a href="ui__update_8c.html#a527b235543e81472134d70bf86683ec7">LL_File</a></div><div class="ttdeci">static lv_ll_t LL_File</div><div class="ttdoc">文件列表管理页被选中的文件名链表</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00200">ui_update.c:200</a></div></div>
<div class="ttc" id="aui__update_8c_html_a58399acf1b4e32d79c4971de38e1dc42"><div class="ttname"><a href="ui__update_8c.html#a58399acf1b4e32d79c4971de38e1dc42">Guidance_Notes</a></div><div class="ttdeci">static const char *const Guidance_Notes</div><div class="ttdoc">简单介绍</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00171">ui_update.c:171</a></div></div>
<div class="ttc" id="aui__update_8c_html_a5af441434574979c5408785942ab0ea8"><div class="ttname"><a href="ui__update_8c.html#a5af441434574979c5408785942ab0ea8">List_File_Max_Num</a></div><div class="ttdeci">static const uint16_t List_File_Max_Num</div><div class="ttdoc">单页文件数量显示上限</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00188">ui_update.c:188</a></div></div>
<div class="ttc" id="aui__update_8c_html_a623d03af25d3abe9fbe311d24d57ca28"><div class="ttname"><a href="ui__update_8c.html#a623d03af25d3abe9fbe311d24d57ca28">msgbox_sync_task</a></div><div class="ttdeci">static void msgbox_sync_task(lv_task_t *t)</div><div class="ttdoc">消息框弹出期间的同步任务</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l01177">ui_update.c:1177</a></div></div>
<div class="ttc" id="aui__update_8c_html_a64ccaf85822f651235e20a08dfc2c500"><div class="ttname"><a href="ui__update_8c.html#a64ccaf85822f651235e20a08dfc2c500">move_handler</a></div><div class="ttdeci">static uint8_t move_handler(void)</div><div class="ttdoc">SD / USB Host 检测插入介质</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00476">ui_update.c:476</a></div></div>
<div class="ttc" id="aui__update_8c_html_a69a8fdfac59efe32394ac287d886ad88"><div class="ttname"><a href="ui__update_8c.html#a69a8fdfac59efe32394ac287d886ad88">file_filter_move</a></div><div class="ttdeci">static uint8_t file_filter_move(const char *path)</div><div class="ttdoc">文件过滤器(仅针对外置存储)</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00250">ui_update.c:250</a></div></div>
<div class="ttc" id="aui__update_8c_html_a6b9762fb44e1c11b05dd4384e004ee16"><div class="ttname"><a href="ui__update_8c.html#a6b9762fb44e1c11b05dd4384e004ee16">Way_Text</a></div><div class="ttdeci">static const char *const Way_Text[_WAY_MAX_]</div><div class="ttdoc">下拉列表的选项文本</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00174">ui_update.c:174</a></div></div>
<div class="ttc" id="aui__update_8c_html_a6b977a7742ea0138c283b98d7f072a61"><div class="ttname"><a href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61">list_t</a></div><div class="ttdeci">list_t</div><div class="ttdoc">列表</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00103">ui_update.c:104</a></div></div>
<div class="ttc" id="aui__update_8c_html_a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f"><div class="ttname"><a href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a59870a6314d0f67f50f096366c970b1f">LIST_MOVE</a></div><div class="ttdeci">@ LIST_MOVE</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00105">ui_update.c:105</a></div></div>
<div class="ttc" id="aui__update_8c_html_a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902"><div class="ttname"><a href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61a8288a33850043de1687ede2377cc3902">LIST_FLASH</a></div><div class="ttdeci">@ LIST_FLASH</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00106">ui_update.c:106</a></div></div>
<div class="ttc" id="aui__update_8c_html_a6b977a7742ea0138c283b98d7f072a61aa7dadc373d1293a6252806d1c1219d6a"><div class="ttname"><a href="ui__update_8c.html#a6b977a7742ea0138c283b98d7f072a61aa7dadc373d1293a6252806d1c1219d6a">_LIST_MAX_</a></div><div class="ttdeci">@ _LIST_MAX_</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00108">ui_update.c:107</a></div></div>
<div class="ttc" id="aui__update_8c_html_a6e87ff056d14d5037f88d7299434bffb"><div class="ttname"><a href="ui__update_8c.html#a6e87ff056d14d5037f88d7299434bffb">Boot_Select</a></div><div class="ttdeci">static enum @1 Boot_Select</div><div class="ttdoc">开机弹窗选择项</div></div>
<div class="ttc" id="aui__update_8c_html_a797b333b12a40decb2c24f829053576e"><div class="ttname"><a href="ui__update_8c.html#a797b333b12a40decb2c24f829053576e">btn_event_handler</a></div><div class="ttdeci">static void btn_event_handler(lv_obj_t *obj, lv_event_t event)</div><div class="ttdoc">独立功能按钮</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00906">ui_update.c:906</a></div></div>
<div class="ttc" id="aui__update_8c_html_a79ab4c3b25e5db481221a48f8c8f89e0"><div class="ttname"><a href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0">btn_jump_t</a></div><div class="ttdeci">btn_jump_t</div><div class="ttdoc">按钮 operate</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00120">ui_update.c:121</a></div></div>
<div class="ttc" id="aui__update_8c_html_a79ab4c3b25e5db481221a48f8c8f89e0a1ca55de3fb737acafbed5b694df304d9"><div class="ttname"><a href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0a1ca55de3fb737acafbed5b694df304d9">BTN_DFU</a></div><div class="ttdeci">@ BTN_DFU</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00124">ui_update.c:124</a></div></div>
<div class="ttc" id="aui__update_8c_html_a79ab4c3b25e5db481221a48f8c8f89e0a389a5271294f16b165df84d82777da64"><div class="ttname"><a href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0a389a5271294f16b165df84d82777da64">BTN_ALL</a></div><div class="ttdeci">@ BTN_ALL</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00123">ui_update.c:123</a></div></div>
<div class="ttc" id="aui__update_8c_html_a79ab4c3b25e5db481221a48f8c8f89e0a5a286a5118e9f16961d315021d46d3b3"><div class="ttname"><a href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0a5a286a5118e9f16961d315021d46d3b3">_BTN_MAX_</a></div><div class="ttdeci">@ _BTN_MAX_</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00126">ui_update.c:125</a></div></div>
<div class="ttc" id="aui__update_8c_html_a79ab4c3b25e5db481221a48f8c8f89e0ad892aae0696cbd7fbe95386c8e74d5fb"><div class="ttname"><a href="ui__update_8c.html#a79ab4c3b25e5db481221a48f8c8f89e0ad892aae0696cbd7fbe95386c8e74d5fb">BTN_LIST</a></div><div class="ttdeci">@ BTN_LIST</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00122">ui_update.c:122</a></div></div>
<div class="ttc" id="aui__update_8c_html_a8128c131b645e18776b40c38bb63e287"><div class="ttname"><a href="ui__update_8c.html#a8128c131b645e18776b40c38bb63e287">MsgBox_Task</a></div><div class="ttdeci">static lv_task_t * MsgBox_Task</div><div class="ttdoc">消息框弹出期间同步执行的任务句柄</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l01144">ui_update.c:1144</a></div></div>
<div class="ttc" id="aui__update_8c_html_a8146347161af60be85eba1ea595d94b4"><div class="ttname"><a href="ui__update_8c.html#a8146347161af60be85eba1ea595d94b4">Dir_Ch</a></div><div class="ttdeci">static const char Dir_Ch</div><div class="ttdoc">目录标识符</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00166">ui_update.c:166</a></div></div>
<div class="ttc" id="aui__update_8c_html_a81fe2f73bce795df8ef1757fc170902a"><div class="ttname"><a href="ui__update_8c.html#a81fe2f73bce795df8ef1757fc170902a">msgbox_sync_cb</a></div><div class="ttdeci">uint8_t(* msgbox_sync_cb)(void)</div><div class="ttdoc">消息框弹出时的同步任务回调函数 return : 0 - 执行完毕,任务结束; other - 未执行完毕/失败, 继续执行</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00152">ui_update.c:152</a></div></div>
<div class="ttc" id="aui__update_8c_html_a8c94ec74d3a5db5ae3daed2ce3a5feaa"><div class="ttname"><a href="ui__update_8c.html#a8c94ec74d3a5db5ae3daed2ce3a5feaa">usb_device_msc_handler</a></div><div class="ttdeci">static uint8_t usb_device_msc_handler(void)</div><div class="ttdoc">USB Device MSC 处理线程</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00446">ui_update.c:446</a></div></div>
<div class="ttc" id="aui__update_8c_html_aa4a4950571bee2848a2e95de6c8ec03c"><div class="ttname"><a href="ui__update_8c.html#aa4a4950571bee2848a2e95de6c8ec03c">msgbox_recv_btn</a></div><div class="ttdeci">static uint8_t msgbox_recv_btn(uint16_t *id)</div></div>
<div class="ttc" id="aui__update_8c_html_aa7b512a01b08ac958f4e505fb0c502bf"><div class="ttname"><a href="ui__update_8c.html#aa7b512a01b08ac958f4e505fb0c502bf">UI</a></div><div class="ttdeci">static lv_ui UI</div><div class="ttdoc">文件列表管理页</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00197">ui_update.c:197</a></div></div>
<div class="ttc" id="aui__update_8c_html_ab134d9ef6a82138c238684cb0af31fde"><div class="ttname"><a href="ui__update_8c.html#ab134d9ef6a82138c238684cb0af31fde">dp_event_handler</a></div><div class="ttdeci">static void dp_event_handler(lv_obj_t *obj, lv_event_t event)</div><div class="ttdoc">下拉选择加载方式</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00862">ui_update.c:862</a></div></div>
<div class="ttc" id="aui__update_8c_html_abd8caa3698afa6b173633a32e0d36ec4"><div class="ttname"><a href="ui__update_8c.html#abd8caa3698afa6b173633a32e0d36ec4">Back_Str</a></div><div class="ttdeci">static const char *const Back_Str</div><div class="ttdoc">返回上一级目录显示标志</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00168">ui_update.c:168</a></div></div>
<div class="ttc" id="aui__update_8c_html_abdb62d45c4cace1544f52cdacda45f24"><div class="ttname"><a href="ui__update_8c.html#abdb62d45c4cace1544f52cdacda45f24">events_init</a></div><div class="ttdeci">static void events_init(lv_ui *ui)</div><div class="ttdoc">注册本页面具备事件回调的控件</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00973">ui_update.c:973</a></div></div>
<div class="ttc" id="aui__update_8c_html_abed58d04a30c85fb2231dace9f928c23"><div class="ttname"><a href="ui__update_8c.html#abed58d04a30c85fb2231dace9f928c23">list_btn_event_handler</a></div><div class="ttdeci">static void list_btn_event_handler(lv_obj_t *obj, lv_event_t event)</div><div class="ttdoc">列表内按钮</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00927">ui_update.c:927</a></div></div>
<div class="ttc" id="aui__update_8c_html_abfff7dba43982483ca07edad75ab3eee"><div class="ttname"><a href="ui__update_8c.html#abfff7dba43982483ca07edad75ab3eee">List_Info</a></div><div class="ttdeci">static list_dp_t List_Info[_LIST_MAX_]</div><div class="ttdoc">文件列表管理页中的当前目录路径</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00203">ui_update.c:203</a></div></div>
<div class="ttc" id="aui__update_8c_html_ac4bb8b84a1ae2abc7bd0419c4345bca2"><div class="ttname"><a href="ui__update_8c.html#ac4bb8b84a1ae2abc7bd0419c4345bca2">dp_select_way_cb</a></div><div class="ttdeci">static void dp_select_way_cb(way_t *way)</div><div class="ttdoc">选择不同加载方式后, 由此函数执行分支跳转</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00598">ui_update.c:598</a></div></div>
<div class="ttc" id="aui__update_8c_html_aca1c2b29944838c9ab089bc024f238dc"><div class="ttname"><a href="ui__update_8c.html#aca1c2b29944838c9ab089bc024f238dc">list_btn_next_event_handler</a></div><div class="ttdeci">static void list_btn_next_event_handler(lv_obj_t *obj, lv_event_t event)</div><div class="ttdoc">列表外按钮点击翻页-下一页</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00953">ui_update.c:953</a></div></div>
<div class="ttc" id="aui__update_8c_html_ad08f050acf50e741aaa931f61b7dc00f"><div class="ttname"><a href="ui__update_8c.html#ad08f050acf50e741aaa931f61b7dc00f">list_btn_cb</a></div><div class="ttdeci">static void list_btn_cb(list_dp_t *list_data, lv_obj_t *btn, lv_obj_t *list, lv_event_cb_t btn_cb)</div><div class="ttdoc">列表内按钮回调</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00773">ui_update.c:773</a></div></div>
<div class="ttc" id="aui__update_8c_html_ad8390d39022fee758b6fb860c7906382"><div class="ttname"><a href="ui__update_8c.html#ad8390d39022fee758b6fb860c7906382">msgbox_event_cb</a></div><div class="ttdeci">static void msgbox_event_cb(lv_obj_t *obj, lv_event_t event)</div><div class="ttdoc">消息框事件回调</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l01155">ui_update.c:1155</a></div></div>
<div class="ttc" id="aui__update_8c_html_ad868081ac7c8daf0af3995fdc3b940b2"><div class="ttname"><a href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2">way_t</a></div><div class="ttdeci">way_t</div><div class="ttdoc">加载方式</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00111">ui_update.c:112</a></div></div>
<div class="ttc" id="aui__update_8c_html_ad868081ac7c8daf0af3995fdc3b940b2a438765e1f3129ec9a15a3750f85ba17c"><div class="ttname"><a href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a438765e1f3129ec9a15a3750f85ba17c">WAY_SD</a></div><div class="ttdeci">@ WAY_SD</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00113">ui_update.c:113</a></div></div>
<div class="ttc" id="aui__update_8c_html_ad868081ac7c8daf0af3995fdc3b940b2a7da97547825333c89d5835511c00e334"><div class="ttname"><a href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a7da97547825333c89d5835511c00e334">WAY_USB_H</a></div><div class="ttdeci">@ WAY_USB_H</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00114">ui_update.c:114</a></div></div>
<div class="ttc" id="aui__update_8c_html_ad868081ac7c8daf0af3995fdc3b940b2a94ed3d890336aa209cd2e7e9fa2ace11"><div class="ttname"><a href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2a94ed3d890336aa209cd2e7e9fa2ace11">WAY_USB_D</a></div><div class="ttdeci">@ WAY_USB_D</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00115">ui_update.c:115</a></div></div>
<div class="ttc" id="aui__update_8c_html_ad868081ac7c8daf0af3995fdc3b940b2ae4c3097bd87be672f365e2e5802667ac"><div class="ttname"><a href="ui__update_8c.html#ad868081ac7c8daf0af3995fdc3b940b2ae4c3097bd87be672f365e2e5802667ac">_WAY_MAX_</a></div><div class="ttdeci">@ _WAY_MAX_</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00117">ui_update.c:116</a></div></div>
<div class="ttc" id="aui__update_8c_html_adf764cbdea00d65edcd07bb9953ad2b7a342bdb40ae73f9a7b19c646abfcce891"><div class="ttname"><a href="ui__update_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a342bdb40ae73f9a7b19c646abfcce891">Option_Cancel</a></div><div class="ttdeci">@ Option_Cancel</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00216">ui_update.c:215</a></div></div>
<div class="ttc" id="aui__update_8c_html_adf764cbdea00d65edcd07bb9953ad2b7a79935518a3889663d8688b6b01fff051"><div class="ttname"><a href="ui__update_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a79935518a3889663d8688b6b01fff051">Default</a></div><div class="ttdeci">@ Default</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00213">ui_update.c:213</a></div></div>
<div class="ttc" id="aui__update_8c_html_adf764cbdea00d65edcd07bb9953ad2b7a8c6655c7178615ef6ad9485727021ee1"><div class="ttname"><a href="ui__update_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a8c6655c7178615ef6ad9485727021ee1">Option_OK</a></div><div class="ttdeci">@ Option_OK</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00214">ui_update.c:214</a></div></div>
<div class="ttc" id="aui__update_8c_html_aea66c53fcc188fefaa3470555db6aa05"><div class="ttname"><a href="ui__update_8c.html#aea66c53fcc188fefaa3470555db6aa05">ui_update</a></div><div class="ttdeci">uint8_t ui_update(void)</div><div class="ttdoc">启动 UI 引导加载界面, 挂载文件系统以实现 UI 素材导入/更新</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00288">ui_update.c:288</a></div></div>
<div class="ttc" id="aui__update_8c_html_af3e1747368f8a109619463c937c3f597"><div class="ttname"><a href="ui__update_8c.html#af3e1747368f8a109619463c937c3f597">Select_Way</a></div><div class="ttdeci">static way_t Select_Way</div><div class="ttdoc">文件列表管理页中下拉列表所选中的加载方式</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00209">ui_update.c:209</a></div></div>
<div class="ttc" id="aui__update_8c_html_af7291cda4b568af469eecf3fbf3a7094"><div class="ttname"><a href="ui__update_8c.html#af7291cda4b568af469eecf3fbf3a7094">msgbox_show</a></div><div class="ttdeci">static void msgbox_show(const char *msg_text, const char **btn_text, const uint32_t wait_ms, msgbox_sync_cb user_cb)</div><div class="ttdoc">消息框弹出提示</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l01201">ui_update.c:1201</a></div></div>
<div class="ttc" id="aui__update_8c_html_aff351d118cacf27e50b7172b5fe7cc6d"><div class="ttname"><a href="ui__update_8c.html#aff351d118cacf27e50b7172b5fe7cc6d">LV_FONT_AUTO_SIZE</a></div><div class="ttdeci">#define LV_FONT_AUTO_SIZE</div><div class="ttdoc">根据分辨率自适应字体大小</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00096">ui_update.c:96</a></div></div>
<div class="ttc" id="aui__update_8c_html_affa34b514b9ff8d1f0d4e1f92df3f221"><div class="ttname"><a href="ui__update_8c.html#affa34b514b9ff8d1f0d4e1f92df3f221">scan_dir_files</a></div><div class="ttdeci">static FRESULT scan_dir_files(list_dp_t *list_data, uint16_t file_num, uint8_t(*file_filter)(const char *), lv_obj_t *list, lv_event_cb_t btn_event_cb)</div><div class="ttdoc">在已打开的目录下, 进行非递归搜寻文件, 并在 list 上刷新显示(文件数量上限由用户指定)</div><div class="ttdef"><b>Definition:</b> <a href="ui__update_8c_source.html#l00508">ui_update.c:508</a></div></div>
<div class="ttc" id="aui__update_8h_html"><div class="ttname"><a href="ui__update_8h.html">ui_update.h</a></div><div class="ttdoc">启动引导更新页, 挂载文件系统实现 UI 素材导入/更新(可选模块)</div></div>
<div class="ttc" id="ausbh__user_8c_html_a7d48b44a4f70758a7db6679935be7643"><div class="ttname"><a href="usbh__user_8c.html#a7d48b44a4f70758a7db6679935be7643">USB_State</a></div><div class="ttdeci">volatile usb_mode_t USB_State</div><div class="ttdoc">USB 工作状态</div><div class="ttdef"><b>Definition:</b> <a href="usbh__user_8c_source.html#l00024">usbh_user.c:24</a></div></div>
<div class="ttc" id="ausbh__user_8h_html_a7cc8c7cfcdc9b7b7bda512eb7681a30b"><div class="ttname"><a href="usbh__user_8h.html#a7cc8c7cfcdc9b7b7bda512eb7681a30b">TIMR_USB_HOST</a></div><div class="ttdeci">#define TIMR_USB_HOST</div><div class="ttdoc">无 OS 下, 为保证响应放到定时器中断内执行</div><div class="ttdef"><b>Definition:</b> <a href="usbh__user_8h_source.html#l00030">usbh_user.h:30</a></div></div>
<div class="ttc" id="ausbh__user_8h_html_ae829d35e41400a0bb30a3c0969152083ae1d756528efb85856a6b92f34db6c729"><div class="ttname"><a href="usbh__user_8h.html#ae829d35e41400a0bb30a3c0969152083ae1d756528efb85856a6b92f34db6c729">USB_MODE_DEVICE_MSC</a></div><div class="ttdeci">@ USB_MODE_DEVICE_MSC</div><div class="ttdef"><b>Definition:</b> <a href="usbh__user_8h_source.html#l00044">usbh_user.h:43</a></div></div>
<div class="ttc" id="auserboot_8c_html_a24048df1d0e7c6baee931ac9501003b6"><div class="ttname"><a href="userboot_8c.html#a24048df1d0e7c6baee931ac9501003b6">Firmware_Name_Update</a></div><div class="ttdeci">const char *const Firmware_Name_Update</div><div class="ttdoc">存放至本地 (SPI-Flash) 的待更新固件文件名</div><div class="ttdef"><b>Definition:</b> <a href="userboot_8c_source.html#l00121">userboot.c:121</a></div></div>
<div class="ttc" id="auserboot_8c_html_a28c8f7a4d5f717351aca6027fd3d7ab7"><div class="ttname"><a href="userboot_8c.html#a28c8f7a4d5f717351aca6027fd3d7ab7">Firmware_Disk</a></div><div class="ttdeci">const disk_t Firmware_Disk</div><div class="ttdoc">本地磁盘类型</div><div class="ttdef"><b>Definition:</b> <a href="userboot_8c_source.html#l00125">userboot.c:125</a></div></div>
<div class="ttc" id="auserboot_8c_html_a52a519a37465a7b4515a237114afa802"><div class="ttname"><a href="userboot_8c.html#a52a519a37465a7b4515a237114afa802">data_encode</a></div><div class="ttdeci">int data_encode(const void *src_buff, void *dst_buff, uint32_t bytes)</div><div class="ttdoc">数据加密</div><div class="ttdef"><b>Definition:</b> <a href="userboot_8c_source.html#l00587">userboot.c:587</a></div></div>
<div class="ttc" id="auserboot_8c_html_a538e1fe7d9d421fde968ca66d523f230"><div class="ttname"><a href="userboot_8c.html#a538e1fe7d9d421fde968ca66d523f230">Firmware_Name_Backup</a></div><div class="ttdeci">const char *const Firmware_Name_Backup</div><div class="ttdoc">存放至本地 (SPI-Flash) 的备份固件文件名</div><div class="ttdef"><b>Definition:</b> <a href="userboot_8c_source.html#l00123">userboot.c:123</a></div></div>
<div class="ttc" id="auserboot_8c_html_a759a4106353e92e06e9d15926228c576"><div class="ttname"><a href="userboot_8c.html#a759a4106353e92e06e9d15926228c576">firmware_download</a></div><div class="ttdeci">uint8_t firmware_download(const char *src_path, const char *dst_path, data_code_cb data_enc)</div><div class="ttdoc">固件下载 (外部 =&gt; 本地)</div><div class="ttdef"><b>Definition:</b> <a href="userboot_8c_source.html#l00461">userboot.c:461</a></div></div>
<div class="ttc" id="auserboot_8c_html_acdd804b92809fcd58b2bc135fc74666c"><div class="ttname"><a href="userboot_8c.html#acdd804b92809fcd58b2bc135fc74666c">jump_to_userboot</a></div><div class="ttdeci">void jump_to_userboot(uint32_t boot_flag, bool wait)</div><div class="ttdoc">跳转至 UserBoot 执行对应动作</div><div class="ttdef"><b>Definition:</b> <a href="userboot_8c_source.html#l00417">userboot.c:417</a></div></div>
<div class="ttc" id="auserboot_8h_html"><div class="ttname"><a href="userboot_8h.html">userboot.h</a></div><div class="ttdoc">IAP 实现 UserBoot 功能</div></div>
<div class="ttc" id="auserboot_8h_html_a734de0e7ed34780e74e947005d781741"><div class="ttname"><a href="userboot_8h.html#a734de0e7ed34780e74e947005d781741">EXEC_UPDATE</a></div><div class="ttdeci">#define EXEC_UPDATE</div><div class="ttdoc">更新固件(检测到有可更新的固件)</div><div class="ttdef"><b>Definition:</b> <a href="userboot_8h_source.html#l00067">userboot.h:67</a></div></div>
<div class="ttc" id="aversion_8h_html"><div class="ttname"><a href="version_8h.html">version.h</a></div><div class="ttdoc">版本/目标控制</div></div>
<div class="ttc" id="aversion_8h_html_a190e24ed4405f51a3099593ea97afb23"><div class="ttname"><a href="version_8h.html#a190e24ed4405f51a3099593ea97afb23">SWM34SCE_PIN48_A2</a></div><div class="ttdeci">#define SWM34SCE_PIN48_A2</div><div class="ttdoc">SWM34SCET6_A2 - Demo板</div><div class="ttdef"><b>Definition:</b> <a href="version_8h_source.html#l00083">version.h:83</a></div></div>
<div class="ttc" id="aversion_8h_html_a737744852bdd23458f08a934778043a9"><div class="ttname"><a href="version_8h.html#a737744852bdd23458f08a934778043a9">SWM34S_LCM_PCBV</a></div><div class="ttdeci">#define SWM34S_LCM_PCBV</div><div class="ttdoc">(用户必须设置)请根据实际使用的官方 Demo 板 PCB 丝印选择对应型号</div><div class="ttdef"><b>Definition:</b> <a href="version_8h_source.html#l00089">version.h:89</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
制作者&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.5
</small></address>
</body>
</html>
